1

== 的作用

  • 基本类型:比较的是值是否相等
  • 引用类型:比较的是内存地址是否相等

equals 的作用

equals 默认是采用 == 来实现,Object 类中 equals 方法源代码如下:

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

从源码上看 equals 和 == 作用是一样的,那么是不是 == 就可以代替 equals 了呢?
我们再来看看 String 类中 equals 方法源代码:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof 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;
}

可以看到 String 类重写了 Object 类中的 equals 方法,把比较引用类型内存地址是否相等改成了比较值是否相等,还有很多类也重写了该方法,比如Integer等。所以一般来说 equals 方法不管比较基本类型还是引用类型比较的都是值是否相等!

匆匆写下,有说的不对的地方请指出。


jwsr
4 声望0 粉丝