equal和hashcode==
Posted hplsharenote
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了equal和hashcode==相关的知识,希望对你有一定的参考价值。
一:
==是运算符,用于比较两个变量是否相等;
equals是Object类的方法,用于比较两个对象是否相等;
hashCode()
是Object类的一个方法,返回一个哈希值
二:区别
基本类型比较用==,比较的是他们的值。默认下,对象用==比较时,比较的是内存地址,如果需要比较对象内容,需要重写equal方法。
如果两个对象根据equal()方法比较相等,那么调用这两个对象中任意一个对象的hashCode()方法必须产生相同的哈希值。
如果两个对象根据eqaul()方法比较不相等,那么产生的哈希值不一定相等(碰撞的情况下还是会相等的。)
有可能两个不相等的对象有相同的hashcode
总结:两个对象相等,必须有相同的hashcode 值,反之不成立
以上是关于equal和hashcode==的主要内容,如果未能解决你的问题,请参考以下文章
面试点:Java 中 hashCode() 和 equals() 的关系