sting的equals底层源码解读
// An highlighted block
public boolean equals(Object anObject) {
//首先判断两个字符串的引用地址是否相同,如果相同则证明是同一个内存地址 直接 return true;
if (this == anObject) {
return true;
}
//判断参数类型是否为String 类型 如果参数类型不为string 直接返回 false
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
//字符串长度和参数长度是佛一样 如果长度不一样 则直接返回 false
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
//判断数组种 同一个索引位置的数据是否一样 如果不一样 则返回false
if (v1[i] != v2[i])
return false;
i++;
}
//当while 执行完成还没return 证明 每一个 索引位置的数据都一样 则返回true
return true;
}
}
return false;
}