两个变量引用的对象要怎样才算相等

两个变量引用的对象要怎样才算相等
引用完全相同的对象,还是有相同状态和行为的不同对象也算?
这是一个很关键的议题:引用相等性和对象相等性。

  1. 引用相等性:堆上同一个对象的两个引用
    也就是说两个引用变量引用的就是同一个对象,hashCode()默认的行为会返回每个对象特有的的序号,大部分是根据内存位置计算的。既然本就是同一个对象,hashCode()自然是一样的,两个引用自然也是相等的
  2. 对象相等性:堆上的两个不同对象在意义上是相同的
    理论上来说要让两个不同的对象视为相等的,首先两个对象的hashCode()必须相同,然后要确保一个对象调用另一个对象为参数的equals()会返回true //equals比较字节组合

关于引用相等性,很好理解:假如一个女孩跟你和你兄弟同时谈恋爱(你们两个都引用她),突然有一天你们三个碰到一起了(判断对象是否相等),那么你和你兄弟会说,哦原来我们的对象是相等的(返回true)🙈🙈
关于对象相等性,可以这么理解吧,两个对象被分别new出来的时候不是同一个对象,但是经过你的改造:覆盖了hashCode()和equals()方法(改变了他们俩的家庭住址和字节组合让他们变成一样的),于是他们也就相等了,至于怎么覆盖来实现相等,方法很多

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡心Dustin_CC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值