String类的equals方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/he37176427/article/details/84344732