栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

后端的

Object.hashCode()
System.identityHashCode()
如何工作?

假设尚未覆盖,则该

Object.hashCode()
方法只需调用即可
System.identityHashCode(this)

的确切行为

System.identityHashCode(Object)
取决于JVM实现。(在最近的Hotspot JVM上的实际实现是相当聪明的,但是我离题了。)

是否

identityHashCode()
返回对象的引用?

否。它返回int,而an int不能保存引用。

返回的整数

identityHashCode
可能与对象的(a)机器地址有关,或者可能不是1。
identityHashCode()
保证返回的值在对象的生存期内不会改变。这意味着,如果GC(在
identityHashCode()
调用之后)重定位对象,则它不能使用新的对象地址作为身份哈希码。

hashCode()是否取决于?对象? ==运算符的后端工作方式。

这没有道理。Java中没有

? ==
?==
运算符。

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

以上已部分解释。其他差异包括:

  • hashpre()
    方法是非最终实例方法,并且在覆盖的任何类中都应覆盖此
    equals(Object)
    方法。相反,
    identityHashCode(Object)
    是一种
    static
    方法,因此不能被覆盖。

  • identityHashCode(Object)
    方法为你提供了一个对象的标识符,该标识符在理论上可以用于哈希和哈希表以外的其他用途。(不幸的是,它不是一个独特的标识符,但被保证为对象的生命周期永远不会改变。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号