hashcode()与equals()方法(第8周)

Posted mapledream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashcode()与equals()方法(第8周)相关的知识,希望对你有一定的参考价值。

一:equals()的作用

  equals() 的作用是用来判断两个对象是否相等。equals() 定义在JDK的Object.java中,通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。

二:equals() 与 == 的区别是什么?

  == : 它的作用是判断两个对象的地址是不是相等即,判断两个对象是不是同一个对象。

  equals() : 它的作用也是判断两个对象是否相等但它一般有两种使用情况:
                 情况1,类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。
                 情况2,类覆盖了equals()方法。一般,我们都覆盖equals()方法来两个对象的内容相等;若它们的内容相等,则返回true(即,认为这两个对象相等)。

: hashCode() 的作用

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

四: hashCode() 和 equals() 的关系

  • 在程序执行期间,只要equals方法的比较操作用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法必须始终如一地返回同一个整数。
  • 如果两个对象根据equals方法比较是相等的,那么调用两个对象的hashCode方法必须返回相同的整数结果。
  • 如果两个对象根据equals方法比较是不等的,则hashCode方法不一定得返回不同的整数。

部分内容摘自:https://www.cnblogs.com/skywang12345/p/3324958.html



以上是关于hashcode()与equals()方法(第8周)的主要内容,如果未能解决你的问题,请参考以下文章

Effective Java 第三版——11. 重写equals方法时同时也要重写hashcode方法

第9条:覆盖equals时总要覆盖hashCode

Java面试题:hashCode() 和 equals()

Java提高篇——equals()与hashCode()方法详解

hashCode与equals的区别与联系

hashCode()与 equals() 之间的关系