每天一道面试题(27)----hashCode()与equals()的相关规定

本文探讨了Java中equals()和hashCode()方法的规定及其相互关系。当两个对象相等时,它们的hashCode必须相同,但反之不成立。重写equals()时,通常需要同时重写hashCode()以确保一致性。此外,`==`比较对象引用,而equals()检查对象内容是否相等。了解这些区别对于理解Java对象比较至关重要。
摘要由CSDN通过智能技术生成

hashCode()与equals()的相关规定:

  1. 如果两个对象相等,则hashCode一定也是相同的
    1. hashCode是JDK根据对象的地址或者字符串以及数字算出来的int类型的数值
  2. 两个对象相等,则他们的equals方法返回true
  3. 两个对象有相同的hashCode值,它们也不一定相等
  4. 因此,equals方法被覆盖重写,则hashCode方法也必须被覆盖重写
  5. hashCode()的默认行为是对堆上的对象产生独特值.如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据).

== 与 equals 的区别

  1. == 是判断两个变量或者实例是不是指向同一个内存空间;
  2. equals是判断两个变量或者实例所指向的内存空间的值是不是相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值