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.youkuaiyun.com/qb170217/article/details/81776546
https://www.jianshu.com/p/2678119ec606
https://www.cnblogs.com/godtrue/p/6395098.html
https://blog.youkuaiyun.com/weixin_33725272/article/details/85851289