[Java] == equals() 区别
==
判断两边的内容,是否是JVM里面的同一个地址里的对象
equals()
除了自定义以及框架中重写的equals()外,主要是先判断==,如果不是同一地址的对象或数据,再判断值是否相等。String的equals()就是这样。
对于String的equals(),先判断是否是同一个地址,用的是==。
如果==是true,那么值一定是相等的。
如果不是同一个地址,再判断值是否相等。
如果两个String值都不一样,肯定不是在同一块内存中的
// package java.lang;
public boolean equals(Object anObject) {
if (this == anObject) {//先使用==
return true;
}
if (anObject instanceof String) {//在判断是一个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;
}
简单总结