Object.hashCode()方法与System.identityHashCode(object)的区别

identityHashCode(object):

1.返回默认的哈希值(其实就是本地方法的值,物理内存产生的值),不论类是否重写了hashCode()方法
2.是属于System类里面的static方法

object.hashCode()

一个类默认会继承或间接继承Object类,如果没有重写hashCode方法,则返回的值和identityHashCode()一样的值,否则根据从写的逻辑。

 

总结:

(1)Object类中的hashCode方法会返回一个hash码,只有指向同一个对象的引用变量调用才会返回相同值,而String类中放宽了要求,对象里的值相等也返回相同值

(2)当null调用hashCode方法时,会抛出空指针异常,但是调用System.identityHashCode(null)方法时能正常的返回0这个值

 

待解疑惑:

为何两个int 值的identityHashCode相同(int值在:-128-127)

如果理解成值在-128-127之间的int型变量的地址和值是一对应的,那为什么int不再这个范围内==还是可以根据值来判断是否相等。

为何float型的值identityHashCode不相同

 

参考文章:

https://blog.csdn.net/qb170217/article/details/81776546

https://www.jianshu.com/p/2678119ec606

https://www.cnblogs.com/godtrue/p/6395098.html

https://blog.csdn.net/weixin_33725272/article/details/85851289

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值