为了账号安全,请及时绑定邮箱和手机立即绑定

hashCode()和identityHashCode()在后端如何工作?

hashCode()和identityHashCode()在后端如何工作?

拉丁的传说 2019-10-10 16:18:09
如何做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的任何内容,则需要有人对其进行更新。


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 408 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信