equals == hashcode个人随记

equals和==是每个类都具有的方法,继承自object,在最初的源头,也就是object里面,这两个方法是等价的,均是比较对象的首地址是否相等(对象的首地址也就是创建的对象在栈内存的地址)。

java中重写equals方法,可以实现个性化的比较,更具灵活性,以满足日常工作需要。equals方法最初先比较对象的hashcode是否相等。(hashcode也就是哈希码,是根据一定的计算规则算出对象的hash值,是一个int类型的值,具体的规则不是很清楚,据说是根据对象的首地址作为依据,然后算出来的值,因此首地址相同的hash值肯定是相同的,但是hash值相同的却不一定是同一个对象);

equals方法重写时注意事项:

1.null值比较肯定为false

2.equals方法重写,hashcode也要重写,并且equals方法的比较要满足hashcode值相等,也算是一种约定(这个在集合中体现出来)

3.自反性 : x.equals(x) 

4.对称性:x.equals(y)=true那么y.equals(x)=true

5.传递性:x.equals(y)=true y.equals(z)=true 那么x.equals(z)=true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值