1. hashCode() 方法
返回对象的哈希值。
下面是jdk1.8对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。