如何做Object.hashCode()和System.identityHashCode()工作在后端?是否identityHashCode()返回对象的引用?是否hashCode()取决于?对象的?==操作员如何在后端工作。hashCode()和之间有什么区别identityHashCode()?
3 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
identityHashCode()的工作原理是这样的(到目前为止,它与地址无关,尤其是因为地址长64位,可以对齐,所以61)
检查是否已经生成了一个,如果已生成则返回它。您可以假定对象标头中有一个位置int;
否则:生成一个随机数(iirc扭曲器 Marsaglia异或移位算法),每个本机线程都有其自己的种子,因此没有共享信息。CAS identityHashCode对象标头中的字段以使用新生成的编号进行更新。如果CAS成功返回该值,否则返回-该字段已经包含了generate identityHashCode。
您可以看到有关覆盖哈希码的其余答复。
底线:如果javadoc仍然声明有关地址和identityHashCode的任何内容,则需要有人对其进行更新。
添加回答
举报
0/150
提交
取消