equals()与hashCode()若干问题

1

==

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

equals()

equals() 的作用是 用来判断两个对象是否相等。

equals()方法存在于Object类中,Object类是所有类的父类。

public boolean equals(Object obj) {
   
    return (this == obj);
}

通过类是否覆盖equals()方法,将它分为2类:

  • 若某个类没有覆盖equals()方法,当它的通过equals()比较两个对象时,实际上是比较两个对象是不是同一个对象。这时,等价于通过“==”去比较这两个对象。
  • 我们可以覆盖类的equals()方法,来让equals()通过其它方式比较两个对象是否相等。通常的做法是:若两个对象的内容相等,则equals()方法返回true;否则,返回fasle。

2

hashCode()

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

hashCode()函数存在于Object类中,Object类是所有类的父类。

public native int hashCode();

hashCode() 在散列表中才有用,在其它情况下没用。
在散列表中hashCode() 的作用是获取对象的散列码,进而确定该对象在散列表中的位置。

hashCode() 和 equals() 的关系

参考

全部评论

相关推荐

02-26 15:33
已编辑
西北大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务