==
对于基本数据类型和引用时有区别的
- 对于基本类型来说是值比较
- 对于引用类型来说是比较的是引用
int a = 3;
int b = 3;
String str1 = "123";
String str2 = "123";
String str3 = new String("123");
System.out.println("a==b的结果:"+(a==b));
System.out.println("str1==str2的结果:"+ (str1==str2));
System.out.println("str1==str3的结果:"+(str1==str3));
System.out.println("str3.equals(str1)的结果:"+(str3.equals(str1)));
- equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
} else {
if (anObject instanceof String) {
String aString = (String)anObject;
if (this.coder() == aString.coder()) {
return this.isLatin1() ? StringLatin1.equals(this.value, aString.value) : StringUTF16.equals(this.value, aString.value);
}
}
return false;
}
}
public static boolean equals(Object a, Object b) {
return a == b || a != null && a.equals(b);
}