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方法