equals和==最大的区别是一个是方法,一个是运算符。
==:如果比较的对象是基本数据类型,则比较的是数值是否相等,如果比较的是引用数据类型,则比较的是对象的地址值是否相等。
equals():用来比较方法两个对象的内容是否相等。
注意:equals方法不能用于基本数据类型(byte、short、int、long、double、float、boolean、char)的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址。
public class Test {
public static void main(String[] args) {
int a = 5;
int b = 6;
int c = a;
//基本类型的比较用==,比较的是两个基本类型的值
System.out.println(a == b);//5不等于6所以为false
System.out.println(a == c);//true
System.out.println(b == c);//false
//基本类型想使用equals比较,就得使用包装类包装基本类型
Integer i1 = a;
Integer i2 = b;
Integer i3 = c;
System.out.println(i1.equals(i2));//false
System.out.println(i2.equals(i3));//false
System.out.println(i1.equals(i3));//true
//引用类型使用==和equals比较,==比较的是引用类型的地址
String s1 = "java";
String s2 = new String("java");
String s3 = s1;
System.out.println(s1 == s2);//false
System.out.println(s1 == s3);//true
System.out.println(s2 == s3);//false
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
System.out.println(s2.equals(s3));//true
}
}
equals和==的equal详解:
==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指向相同一个对象。equals用来比较的是两个对象的内容是否相等,由于lang包下的Object类是所有类的父类,所以适用于所有对象,如果没有重写equals方法时,调用的仍然是Object类中的方法,而Object中的equals方法返回的是==的判断。



