为什么对象的Hashcode会在Java中发生变化?

为什么对象的Hashcode会在Java中发生变化? 它有变化吗? 它与Hashtable有什么关系? 每个对象都应该拥有它唯一的hashcode.So,正在重新推出它的原因吗?

提前致谢。

hashcode的默认实现等同于对象标识。 但是,某些对象会覆盖哈希码,这可能会为您提供基于对象状态更改的哈希码。

通常,如果要覆盖equals的定义,则执行此操作(事实上,如果覆盖equals,则应覆盖hashcode)。 这是因为您希望通过您创建的任何定义相等的对象返回相同的哈希码。 否则,您可能会遇到地图包含多个“相等”对象的情况,因为它们返回不同的哈希码。