Java之~hashCode和equals的区别

==  不能重写

1,基本数据类型 

        基础数据类型比较的是他们值。

2,引用类型(类、接口、数组)   

        “==”对比的是两个对象的内存地址是否相同   。

string例外

string在jvm虚拟机中的方法区存放,方法区中声明的八种基本数据类型和字符串常量。上边的str1和str2就是字符串常量,new String()的,是字符串实例化对象,是要放在堆里边的,切莫混淆。

equals 可以重写

equals方法用于比较对象的内容是否相等

默认比较的也是两个对象在java虚拟机中的地址,但是我们可以对一个对象的equals方法进行重写

 


hashCode

1,hashcode方法只有在集合中用到

2,hashCode的设计初衷是提高哈希容器的性能

3,equals的效率是没有hashCode高的

4,hashcode 返回一个对象在java虚拟机中的地址。hashCode方法实际上返回的就是对象存储的物理地址(实际可能并不是)。   

总结:

如果两个对象的hashCode()相等,那么他们的equals()不一定相等。
如果两个对象的equals()相等,那么他们的hashCode()必定相等。

参考:真正搞懂hashCode和hash算法_成都彭于晏的博客-CSDN博客_hashcode怎么算出来的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值