经过学习,自己总结的重写HashCode()和equals()方法,还有"=="与equals()的区别

1. "==" 和"equals"的区别?
            
    "==" 是比较的对象的地址(存在栈里面),而equals 比较的是对象里面的内容(存在堆里面).

2.为什么要重写HashCode() 和equals() ?  为什么String对象不用重写equals()?
     在集合中的set是一个无序不重复的集合容器,判断其唯一不重复的实现,是根据给集合中的每个对

象分配一个HashCode值,这个值就像一个物理地址,每次成功添加元素都会为其分配一个HashCode,而每次

向集合中添加元素时,首先会调用它的HashCode方法,为其分配一个HashCode值,然后找这个HashCode值是

否存在.若不存在就证明这个值以前没有存入过,直接存储.若存在,就调用它的第二个方法equals,将其与

已存在HashCode值中的其他元素进行比较,若equals比较的结果为true 则证明这个元素和其他的元素相

等,不可存.反之,就可以存储了.
     

     在实际的开发过程中,我们还是要根据实际的业务去判断,我们是否要去重写!例如,我们要使用

Map<对象,value> map=new HashMap<对象,value>();时,这里的对象作为key,必须要保证它是唯一且不重复的


,所以我们再创建它的时候,必须重写这个对象的HashCode方法 和equals方法的.
    可能我们会问到,为什么String也是对象,它也可作为Key.但我们为什么不去重写它的这两个方法呢?

应为java已经帮你写好了String方法了.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值