Java源码解析:hashCode与相同对象的关系

本文探讨了Java中hashCode方法与对象等价性的关系。针对普通类对象,即使hashCode相同,对象并不一定是同一个。而对于数值型原始数据类型的包装类,如Double,只要值相等,hashCode值必定相同。通过分析Double类的hashCode实现,并提供测试代码以验证这一行为。

1.普通类对象

1. hashCode相同,不一定是同一个对象
2. 同一个对象的,hashCode值一定相同

这里写图片描述

2. 数值型的原始数据类型对应的包装类

只要值是一样的,hashCode就会是相同的。尽管不同的数值类型的包装类,计算hashCode的算法不一样,但是底层都是拿对应的原始数据类型的值去进行hashCode计算。

以Double类为例

这里写图片描述


3. 测试代码如下

/**
 *hashCode相同,不一定是同一个对象
 *同一个对象的,hashCode值一定相同 
 *
 *-------------------------------------------------------------------------------
 *普通对象的HashCode值源码解释:
 *If two objects are equal according to the equals(Object) method, then calling 
 *the hashCode method on each of the two objects must produce the same integer result. 
 *--------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值