Java中的equals()和“==”

equals()方法本质上就是==,比较的是两个变量是否指向同一块内存地址。 由于字符串String比较特殊,既可以是对象null,也可以具体的赋值,我们平时比较两个字符串时,经常比较的是值是否相等,而不太在意内存地址的问题,所以String类就覆盖重写了equals()方法实现比较字符串值相等。 Object.java

public boolean equals(Object obj) {
    return (this == obj);
}

String.java

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = length();
        if (n == anotherString.length()) {
            int i = 0;
            while (n-- != 0) {
                if (charAt(i) != anotherString.charAt(i))
                        return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

猜你喜欢

转载自juejin.im/post/7124966106334232589