1、首先,hashcode()比较为true,equals()比较不一定为true
如下(第一张图为test.java)
第二张图对两个Test类进行比较,


2、equals()比较为true,hashcode()不一定为true(图1为test类,图二为比较结果)


1、类的 hashCode() 方法和 equals() 方法都可以重写,返回的值可以自己定义
如下图

1、 hashCode() 和 equals()的一些常规协定1:两个对象用 equals() 比较返回true,那么两个对象的hashCode()方法必须返回相同的结果
如下图:



1、hashCode() 和 equals()的一些常规协定2:两个对象用 equals() 比较为false,不要求hashCode()方法也一定返回不同的值,但是最好返回不同值,以提高哈希表性能。(如下图中的hashcode(),equals()不同时会返回一个随机数)

1、hashCode() 和 equals()的一些常规协定3:重写equals(),必须也重写hashcode(),用以保证equals()相等时,两个对象返回相同的hashcode (如下图重写时,两个一起重写)

