猿问

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

如何做Object.hashCode()和System.identityHashCode()工作在后端?是否identityHashCode()返回对象的引用?是否hashCode()取决于?对象的?==操作员如何在后端工作。


hashCode()和之间有什么区别identityHashCode()?


拉丁的传说
浏览 409回答 3
3回答

ABOUTYOU

identityHashCode()的工作原理是这样的(到目前为止,它与地址无关,尤其是因为地址长64位,可以对齐,所以61)检查是否已经生成了一个,如果已生成则返回它。您可以假定对象标头中有一个位置int;否则:生成一个随机数(iirc扭曲器 Marsaglia异或移位算法),每个本机线程都有其自己的种子,因此没有共享信息。CAS identityHashCode对象标头中的字段以使用新生成的编号进行更新。如果CAS成功返回该值,否则返回-该字段已经包含了generate identityHashCode。您可以看到有关覆盖哈希码的其余答复。底线:如果javadoc仍然声明有关地址和identityHashCode的任何内容,则需要有人对其进行更新。
随时随地看视频慕课网APP

相关分类

Java
我要回答