如果两个对象相等,则hashcode必须相等。 如果两个对象相等,则a.equals(b),而且b.equals(a)。 如果两个对象的hashcode值相等,但他们不一定相等。 如果覆盖了equals(),则也要覆盖hashcode()。 hashCode()的默认行为是对在heap上的对象产生独特的值。如果没有override过hashCode(),则该class的两个对象怎么样都不会被认为是相同的。 equals()的默认行为是执行==,也就是说去测试两个引用是否对上heap上同一个对象。如果equals()没有被覆盖,两个对象永远都不会被视为相同。因为不同的对象有不同的字节组合。 a.equals(b)必须与a.hashCode()==b.hashCode()等值。 但a.hashCode()==b.hashCode()时,a.equals()不一定等值。 |