在
Java
中,
hashCode
和
equals
⽅法都是
Object
类的⽅法。它们的作⽤分别如下:
hashCode
⽅法返回对象的哈希码,⽤于⽀持基于哈希表的集合,如
HashMap
、
HashSet
等。如果两个对象
的
equals
⽅法返回
true
,则它们的
hashCode
⽅法必须返回相同的值,反之则不需要。
equals
⽅法⽤于⽐较对象是否相等。默认情况下,
equals
⽅法使⽤的是
==
操作符,即只有两个对象引⽤指
向同⼀个对象时才会返回
true
。但是,⼤部分情况下,我们需要重写
equals
⽅法来实现⾃⼰定义的相等规
则。
两者之间的区别在于,
hashCode
⽅法返回的是⼀个
int
类型的数值,⽽
equals
⽅法返回的是⼀个
boolean
类型
的值。
hashCode
⽅法⽤于快速⽐较两个对象是否不同,因为如果它们的哈希码不同,那么它们肯定不相等。
equals
⽅法
则⽤于判断两个对象是否真正相等,这个判断⽐较复杂,需要根据对象的实际情况来定义。
另外,需要注意的是,
==
操作符⽤于⽐较两个对象的引⽤是否相等,即它们是否指向同⼀个对象。⽽
equals
⽅法
则⽤于⽐较两个对象的值是否相等。
在
Java
中,对象的值⽐较往往需要根据对象的实际情况来定义,因此⼀般需要重写
equals
⽅法。