`hashCode()`是Java中的一个方法,定义在`Object`类中,用于获取对象的哈希码(hash code)。
哈希码是一个由整数表示的对象标识,用于快速确定对象在哈希表等数据结构中的存储位置。哈希码是通过将对象的内部状态(如字段的值)映射为一个整数值得到的。
`hashCode()`方法的作用在于提供一种快速计算对象的哈希码的标准方式,以便在需要对对象进行散列存储或比较时使用。它主要在集合类(如`HashSet`、`HashMap`)中被使用,用于确定对象在集合中的存储位置,以及检查对象的相等性。
在使用包含散列存储的集合类时,如不重写`hashCode()`方法,在集合中进行查找和比较操作时可能无法正确工作。因为如果两个对象的内容相同,但它们的哈希码不同,集合类会认为它们是不同的对象。因此,在重写`equals()`方法时,通常也要重写`hashCode()`方法,以确保对象的相等性和哈希码的一致性。
重写`hashCode()`方法的常规约定是,如果两个对象通过`equals()`方法相等,那么它们的哈希码应当相等。但是,两个哈希码相等的对象不一定通过`equals()`方法相等。这是因为哈希码是一个有限范围的整数,可能存在哈希冲突的情况。好的哈希函数应当尽量减少哈希冲突的概率,以提高散列性能。