之前看过某篇博文,写了Integer 的 cache 其上下限-127 到 128 可以使用“==”,否则就需要使用.equals的方法判断是否相等。
今天,闲来无事,就看看String 的 Compare 方法。
不说话,先上代码
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;
}
以上是java String类库的.equals源码
首先,使用“==”方法比较地址
其次,若地址不同,则进行分步解析
1.判断参数是否为String类型
2.在单个解析字节
a.长度
if (n == anotherString.value.length)
b.字节
if (v1[i] != v2[i])