equals源码分析

public boolean equals(Object anObject) {
//比较是不是同一个对象,这里是==比较,比较的是地址,地址相同则是相同
//this这里指代的是当前调用对象,就是谁调用的equals方法,这里的this指的就是谁
    if (this == anObject) {
        return true;
    }
//instanceof判断anObject是不是String的子类
    if (anObject instanceof String) {
//此处转为String类型,便于下面把每个字符取出来进行比较
        String anotherString = (String) anObject;
//value是String类自身的属性,length没有翻到到底是哪里定义的属性,反正n就是指代一个int类型的对象(你调用equals方法的那个对象)的长度
        int n = value.length;
//判断长度是否相同,不相同肯定肯定是false了
        if (n == anotherString.value.length) {
//自身属性的引用,String类本身定义的
            char v1[] = value;
//相当于String转数组
            char v2[] = anotherString.value;
            int i = 0;
//遍历拿出每一个字符进行比较,每个字符按顺序取出,都相同则true
            while (n-- != 0) {
                if (v1[i] != v2[i])
                        return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

猜你喜欢

转载自blog.csdn.net/wanwan2018/article/details/81411434
今日推荐