== 和 equals

基本数据类型是值比较,引用类型是引用比较
"=="     比较对象的内容,值类型比较,Integer/String 包装类和基本数据类型比较时拆箱做值比较
equals() 比较对象的内容,引用类型比较 //equals是Object的方法,基本数据类型不能调用

Integer a  = new Integer(3); //堆中的对象,为引用类型
Integer a2 = new Integer(3);
Integer b  = 3; //常量池中的对象,为值类型
int     c  = 3; //值类型
System.out.println(a == b); //false,引用类型和值类型不能用==比较
System.out.println(a == a2); //false,引用类型之间不能用==比较
System.out.println(a == c); //true,包装类和基本数据类型比较时拆箱做值比较
System.out.println(b == c); //true,包装类和基本数据类型比较时拆箱做值比较
System.out.println(a.equals(b)); //true
System.out.println(a.equals(a2)); //true
System.out.println(a.equals(c)); //true

String x  = "str"; //常量池中的对象,x y指向同一个引用
String y  = "str";
String z  = new String("str"); //堆中的对象
String z2 = new String("str"); //
System.out.println(x == y); //true
System.out.println(x == z); //false
System.out.println(x.equals(y)); //true
System.out.println(x.equals(z)); //true
System.out.println(z.equals(z2)); //true

String s1 = new String("苹果");
String s2 = new String("苹果");
Cat c1    = new Cat("name");
Cat c2    = new Cat("name");
System.out.println(s1.equals(s2)); //true
System.out.println(c1.equals(c2)); //false

上一篇:判断某一对象与List中的对象是否一致(判断对象中的属性)


下一篇:【Java基础】HashSet去重原理