Hashcode相等和equals相等的关系

tech2023-06-02  114

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不相等

最新回复(0)