Hashcode和equals 关系
以下都是除了特例以外:(如“AA” “Bb” 的hashcode都是2112)
1. equals相等
Hashcode不一定相等
1.1 若是equals方法未重写,比较的是堆中地址相等 ,则是同一个对象,hashcode不管重不重写都相等 1.2 若是equals方法重写,比较的是对象的成员变量值,equals相等有可能是堆中new了一个对象,地址不同, 所以hashcode若是没有重写,则根据地址算法不相等, 若是hashcode方法也重写了,则根据成员变量的hashcode值是相等的。
2. hashcode相等
equals不一定相等
2.1若是Hashcode方法未重写,代表是一个地址,那么就是同一个对象,equals 不管重写不重写都相等 2.2若是hashcode方法已经重写,则代表的是成员变量的hashcode值,相等,则成员变量相同, 若是equals方法重写了,比较的也是成员变量值则相等, 若是equals方法未重写,比较的是堆中地址, 则可能是new了一个新的对象,equals不相等