版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/he37176427/article/details/84344732
先上代码
public boolean equals(Object anObject) {
if (this == anObject) { //1.比地址
return true;
}
if (anObject instanceof String) { //2.比对象类型
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) { //3.比长度
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) { //4.比值
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
字符串比较方法可以看出从大方向到小方向对比
1.同一个对象? 比引用地址 如果地址都一样,即一个对象 直接返回true
2.同一种对象? 地址不同,instanceof 看是不是String类型,如果不是肯定不同
3.值长度一样? 地址不同 但是是String类 则比较一下两个字符串的值的长度 长度不同则一定不相同
4.值内容一样? 长度也相同时,才会对值从索引为0到最后逐个对比,若有任一个位置不相同则返回false