java的hashCode()方法是如何工作的?

2022-09-02 05:33:15

我很好奇java如何使用Object API的hashCode()方法生成哈希值?


答案 1

的实际上是一个本机方法,其实现实际上不是纯Java。现在,关于它是如何工作的,Tom Hawtin的这个答案在解释它方面做得很好:hashCode()Object

许多人会声称这将返回内存中对象表示的地址。在现代实现中,对象实际上在内存中移动。相反,对象标头的一个区域用于存储值,该值可能是在首次请求值时从内存地址中延迟派生的。Object.hashCode

整个答案实际上值得一读。


答案 2

Java不生成hashCode(),即这里没有自动发生任何事情。但是, 会根据对象实例的内存地址生成哈希码。大多数类(特别是如果你打算在任何API中使用它)应该实现他们自己的HashCode(并通过合同实现他们自己的平等方法)。ObjectCollection