1.  hashCode() 方法

        返回对象的哈希值。

        下面是jdk1.8对hashCode()方法的介绍: 

Java基础——equals和hashCode的区别   

大意就是:

        返回对象的哈希值。这种方法支持哈希表的好处,例如哈希表提供的哈希表。    

        在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。

        如果两个对象按照equals(object)方法相等,则调用两个对象中的每个对象的HASHCODE方法必须产生相同的整数结果。
        如果两个对象按照equals(object)方法不相等,然后调用hashCode方法的每一个对象不一定要产生不同的整数结果。然而,程序员应该知道,对于不相等的对象产生不同的整数结果可以提高哈希表的性能。


2.  equals()方法

equals()方法比较的是对象的内容。

        如果两个对象按照equals(object)方法相等,则调用两个对象中的每个对象的HASHCODE方法必须产生相同的整数结果。

        PS:String类对hashCode()和equals()方法进行了重写。如果要对equals()方法进行重写,就必须重写hashCode()方法,不然会得到不如人意的结果。


3. 运算符==

== 比较的是对象的物理地址。

        有两对象a和b,如果对象a == b,那么a.equals(b)返回true,那么a.hashCode()和b.hashCode()返回的哈希码相同。

       如果a != b,那a.equals(b)可能返回true,也可能返回false。

相关文章: