equals()和hashCode

本文深入解析equals()和hashCode()在Java中的作用与关系。强调了两方法的一致性原则,即equals方法返回true时,hashCode值必须相同。同时,文章详细阐述了equals()的四大特性:自反性、对称性、传递性和一致性,并提供了自定义equals()的注意事项及与null处理的细节。

equals()和hashCode

equals()和hashCode

如果两个对象相同(equals 方法返回 true),那么它们的 hashCode 值一定要相同;

如果两个对象的 hashCode 相同,它们并不一定相同。但容易造成Set等使用哈希存储的系统存取性能急剧下降。

 

equals()的特点:自反性,对称性,传递性,一致性

自反性(x.equals(x)必须返回 true)、

对称性(x.equals(y)返回 true 时,y.equals(x)也必须返回 true)、

传递性(x.equals(y)和 y.equals(z)都返回 true 时,x.equals(z)也必须返回 true)

一致性(当 x 和 y 引用的对象信息没有被修改时,多次调用 x.equals(y)应该得到同样的返回值)

 

自定义equals()注意事项

使用==操作符检查"参数是否为这个对象的引用";

使用 instanceof 操作符检查"参数是否为正确的类型";

对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

满足equals()的特点测试:自反性,对称性,传递性,一致性

 重写 equals 时总是要重写 hashCode。

 

equals()与null

Null.equals()则报异常。A.equals(null)永远为false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值