== 既可以比较基本数据类型也可以比较引用数据类型。对于基本数据类型比较的就是值,对于引用数据类型比较的就是地址值。equals() 只能在引用数据类型之间进行比较
- 基本数据类型:
- == 比较的是值
- 引用数据类型:
- 重写了 equals() 方法
- 比较的是内容
- 例如:String,Integer
- 没有重写:
- 比较的是地址值
- 重写了 equals() 方法
现在就能解释为什么 String类 使用 equals() 方法比较返回的是true了,因为String 类重写了 Object 类的 equals() 方法
Object:
public boolean equals(Object obj) {
return (this == obj);
}
String:
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;
}



