Java中 ==、equsls 和hashCode辨析

==

一句话比较的是变量的值是否相等。对于基本数据类型,就是比较数值;对于引用数据类型的变量,比较的是两个储存的地址值是否相同,即是否指向同一块储存空间

equals

Object类中的方法,源码定义中使用“==”运算符,故若没覆盖,就相当于“==”,需要开发人员自己编写equals方法,来判断什么情况可认为“相等”

hashCode

Object类中的一个方法,返回对象在内存中地址转换成的一个int值。

通用约定:

覆盖equals()方法的同时也要覆盖hashCode()方法;约定:如果x.equals(y)返回ture,则hashCode()返回值两者一定相等。

扩展:

在使用HashMap的key时,如果想根据对象的属性来自定义对象是否相等的逻辑,需要重写equals()方法,一旦重写了equals()方法,就必须重写hashCode方法。

发布了58 篇原创文章 · 获赞 0 · 访问量 1010

猜你喜欢

转载自blog.csdn.net/Mason97/article/details/104321341