0
点赞
收藏
分享

微信扫一扫

“==”和equals的区别? equals和hashCode的区别?(简单易懂,有这一份就够了)

花姐的职场人生 2022-03-25 阅读 67
javaeclipse

“==”和equals的区别?

“==”

1,比较8大基本数据类型(byte,short,int,long,float,double,char,boolean):

==比较是值是否相等。

2,比较6大引用数据类型(类,接口,抽象类,枚举,注释,数组)

==比较是地址值是否相等。

equals

1,只能比较引用数据类型

equals比较的是内容是否相同。

equals和hashCode的区别?

重点结论

前提是两个对象都重写了hashCode和equals方法,

equals相等的两个对象,hashCode一定相等。

hashCode相等的两个对象,equals一定相等。

上述结论解释:

equals比较的引用数据类型比较的是两个对象的内容是否相等,而hashCode比较的是两个对象的哈希值是否相等(两个内容不同的值生成的哈希值可能也是相同的,所以再进行equals比较的时候,就可能不相等。这就是所谓的哈希碰撞(HashMap底层原理会有哈希碰撞)

顺带提一下

equals和hashCode,一个是性能好(hashCode),一个是可靠性(equals)。

equals的比较比较全面复杂,效率较低,而hashCode比较只用生成一个哈希值就可以了,效率高。

举报

相关推荐

0 条评论