hashCode()与equals()相关规定

来源:互联网 发布:软件激活码破解器 编辑:程序博客网 时间:2024/05/16 00:24

1.如果两个对象相等,则hashcode必须相等。

2.如果两个对象相等,对其中的一个对象调用equals()必须返回true,也就是说a .equals(b),则 b.equals(a).

3.如果两个对象有相同的hashCode值,他们也不一定相等。但若两个对象相等,则hashcode值一定相等。

4.因此若equals()被覆盖过,则hashcode()也必须被覆盖。

5.hashCode()的默认行为实在对heap上的对象产生独特的值。如果没有override过hashCode(),则该class的两个对象怎么都不会被认为是相同的。

6.equals()的默认行为是执行==的比较。也就是说会去测试两个引用是否对上heap上同一个对象。如果equals()没有被覆盖过,两个对象永远都不会被视为相同的。因此不同的对象有不同的字节组合。
a.equals(b)必须与a.hashCode()==b.hashCode()等值。
但a.hashCode()==b.hashCode不一定要与a.equals()等值。

0 0
原创粉丝点击