java中equals和hashCode

2022-08-28 12:46:24

equals和hashCode

两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
两个obj,如果hashCode()相等,equals()不一定相等
两个不同的obj, hashCode()可能相等

“==”:

作用是判断两个对象的地址是否相等,即,判断两个对象是不是同一个对象,如果是基本数据类型,则比较的是值是否相等。

“equal”:

作用是判断两个对象是否相等,但一般有两种使用情况
1.类没有覆盖equals()方法,则相当于通过“==”比较
2.类覆盖equals()方法,一般,我们都通过equals()方法来比较两个对象的内容是否相等,相等则返回true,如String

地址比较是通过计算对象的哈希值来比较的,hashcode属于Object的本地方法,对象相等(地址相等),hashcode相等,对象不相等,hashcode()可能相等,哈希冲突

hashCode()

存在是为了查找的快捷性,用于在散列存储结构中确定对象的存储地址

如果两个对象 equals相等,则 hashCode()也一定相等
如果 equals方法被重写,则 hashCode()也应该被重写
如果两个对象的 hashCode()相等, equals()方法不一定相等
equals方法没有重写,比较的就是应用类型的变量所指向的对象的地址

  • 作者:喽耶
  • 原文链接:https://blog.csdn.net/weixin_45122172/article/details/120927911
    更新时间:2022-08-28 12:46:24