在java对象中哈希码的实现是什么?

2022-09-02 13:00:40

可能的副本:
如何在Java中计算hashCode()

我发现在Java中的root类方法中没有实现:hashCode()Object

public native int hashCode(); 

如果我有 和 an ,我怎么能知道 和 值而不使用 ?只需通过实施。Object aObject ba.hashCode()b.hashCode()System.out.println()hashCode

我尝试了两个对象,令我惊讶的是,这些值是相同的:它们都是1。newArrayListhashCode()


答案 1

hashCode是一种方法,这意味着在内部调用系统库。有关更多详细信息,请参阅 Java 本机接口native

有一个关于SO的问题 为什么hashCode()和getClass()是原生方法?可能对您感兴趣。


答案 2

默认的哈希代码将是特定于实现的。我怀疑它与内存地址有关,但请注意,VM在内存中移动对象(当然,哈希码必须保持不变)。因此,它不会是实际的内存地址。