·

为什么两个dog对象在没有重写hashCode方法的时候在table表中计算的位置不一样?

因为所有的 Java 对象默认继承 java.lang.Object,Object 的 hashcode 方法返回对象地址,hashCode() 不一样所以计算的位置不一样,Object 的 equals 也是比较地址

重写了toString方法后是按toString转化后的字符串计算吗?

hashCode 跟 toString 方法无关

为什么会出现第二个dog对象和lucy在同一个位置的情况?

毕竟只有 16 个桶,很容易就取余到同一个位置了

Replies
2

理解了,非常好奇为什么增加了一个断点,第二个对象在table表中的位置怎么变了?是JVM的关系?

多跑几次呢