==
较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致。如果两个对象的引用相同时(指向同一对象时),“==”操作符返回true,否则返回flase。equals
用来比较某些特征是否一样。我们平时用的String类等的equals方法都是重写后的,实现比较两个对象的内容是否相等。
我们来看看String重写的equals方法:
它不止判断了内存地址,还增加了字符串是否相同的比较。
public boolean equals(Object anObject) {
//判断内存地址是否相同
if (this == anObject) {
return true;
}
// 判断参数类型是否是String类型
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;
}