== 和 equals 的区别

== 和 equals 的区别

== 对于基本数据类型来说,是用于比较
“值”是否相等的;而对于引用类型来说,是用于比较引用地址是否相同的。

查看源码我们可以知道 Object 中也有 equals()  方法,源码如下:

public boolean equals(Object obj) {

    return (this == obj);

}

可以看出,Object 中的 equals() 方法其实就是 ==,而 String 重写了 equals()
方法把它修改成比较两个字符串的值是否相等。

源码如下:

public boolean equals(Object anObject) {

    // 对象引用相同直接返回 true

    if (this == anObject) {

        return true;

    }

    // 判断需要对比的值是否为 String 类型,如果不是则直接返回 false

    if (anObject instanceof String) {

        String anotherString = (String)anObject;

        int n = value.length;

        if (n == anotherString.value.length) {

            // 把两个字符串都转换为 char 数组对比

            char v1[] = value;

            char v2[] = anotherString.value;

            int i = 0;

            // 循环比对两个字符串的每一个字符

            while (n-- != 0) {

                // 如果其中有一个字符不相等就 true false,否则继续对比

                if (v1[i] != v2[i])

                    return false;

                i++;

            }

            return true;

        }

    }

    return false;

}
原文地址:https://www.cnblogs.com/xiaodou00/p/13495206.html