栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号