深入理解HashCode和equals

hashCode和equals方法

JDK version:1.8.0_171


Object类位于Java的顶层,是Java所有类的父类。任何对象,包括数组,都实现了该类的方法。首先针对Object类中的两个方法equals()和hashCode()方法进行讲解。

1. Object类hashCode和equals方法

hashCode方法返回对象的哈希值,实现本方法主要是为了支持hash表(比如HashMap
对于hashCode的规定如下:

  1. 在Java应用程序的一次执行过程中,如果一个对象在equals()方法进行比较所使用到的信息没有修改,那么该对象的hashCode()不管调用多少次,始终返回相同的hash值。但多次运行Java应用程序时,同一个对象的hashCode()方法的返回结果可以不同。
  2. 如果x.equals(y)返回true,那么x和y的hashCode()方法应该返回相同的hash值。
  3. 如果x.equals(y)返回false,那么x和y的hashCode()方法可以返回相同的hash值,但是我们必须意识到对于"不相等"的两个对象返回相同的hash值,这可能会降低hash表的性能。
public native int hashCode();

  在合理可行的范围内,Object类实现的hashCode方法对于不同的对象返回不同的整数。
修饰符native表明该方法是原生方法,由操作系统实现,Java只负责调用,不同平台可能会有不同的实现,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值