对于 == 和equals方法区别的理解

本文详细解析了Java中equals方法与hashcode方法的工作原理及其重要性。通过具体示例说明了二者之间的联系及如何正确地重写这些方法以确保自定义类能够正确地在HashMap等集合中工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于自己定义的类,由于java会默认继承object类,object类是没有重写equals方法的,其作用和==方法一致,都是用来判断两个变量的地址是否一致,一致返回true,不一致false。

对于String,Integer等已经重写过equals方法的类,这时候==和equals方法就不一样了,==的作用还是一样,equals方法则会判断对应的值是否一样,比如 :

String str = new String(“asd”);
String sss = new String(“asd”);

这时候用==比较返回false。因为他们地址不一样。用equals方法判断就会返回true,因为值相同。
所以如果我们自己人为定义一个类,需要用equals方法来比较值,就一定要重写equals方法。但这时候又有一个问题,就是重写equasl方法必须要重写hashcode方法,因为hashcode一开始是和equals方法配套使用的,其开始默认会比较地址。如果不同时重写,就会导致存储重复的数值。导致Hashmap混乱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值