Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
例如,如果我创建一个 A 类型的对象,
A a = new A();
那么 a 是 Stack 上的一个引用,它指向堆上的 A 类型对象。我的问题是,如果我调用a.hashCode(),会返回哪个hashcode,是引用的hashcode还是对象的hashcode?如果它是对象的哈希码,我如何获得引用的哈希码?有人可以给我一些建议吗?
hashCode()只是一个非静态方法,就像任何其他非静态方法一样。它要么由 定义,要么由(A的基类,在最坏的情况下) 定义。所发生的只是在相关实例上调用该方法。AObject
hashCode()
A
Object
我怎样才能得到参考的哈希码?
你不能,因为那没有意义。
您可以通过调用获取引用的哈希码:
System.identityHashCode(a);
这就是 java.util.IdentityHashMap 等数据结构的基础。