输出结果:
true 若==两边的变量是引用变量,则其比较的是这两个变量的内存地址,只有它们指向同一个对象时,才会返回true public static void test(){ String str1="你好"; String str2=new String("你好"); String str3="你好"; String str4=new String("你好"); int b=10; System.out.println(str1==str2); System.out.println(str1==str3); System.out.println(str2==str4); }输出结果:
false true falseequals方法不能作用于基本类型的变量
如果没有对equals方法进行重写,则比较的时引用类型的变量所指向的对象的地址
如果被String、Data等类对equals方法进行了重写,则比较的是所指向对象的内容。
String类的equals方法的重写
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String) anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } equal方法源码: public boolean equals(Object obj) { return (this == obj); } 对String类中的equals方法的练习 public static void test(){ String str1="你好"; String str2=new String("你好"); String str3="你好"; String str4=new String("你好"); System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); System.out.println(str2.equals(str4)); true true true