[Java] == equals() 区别

==
判断两边的内容,是否是JVM里面的同一个地址里的对象
equals()

除了自定义以及框架中重写的equals()外,主要是先判断==,如果不是同一地址的对象或数据,再判断值是否相等。String的equals()就是这样。

对于String的equals(),先判断是否是同一个地址,用的是==。
如果==是true,那么值一定是相等的。
如果不是同一个地址,再判断值是否相等。

如果两个String值都不一样,肯定不是在同一块内存中的
// package java.lang;
    public boolean equals(Object anObject) {
        if (this == anObject) {//先使用==
            return true;
        }
        if (anObject instanceof String) {//在判断是一个String,长度,每个字符的值
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

简单总结

posted @ 2022-11-22 16:08  NetUSA  阅读(27)  评论(0)    收藏  举报