关于hashcode:为什么要重写hashcode方法和equals方法

5次阅读

共计 424 个字符,预计需要花费 2 分钟才能阅读完成。

1、对于值对象,== 比拟的是两个对象的值
2、对于援用对象,比拟的是两个对象的地址

一、equals()办法

public boolean equals(Object obj) {return (this == obj);
}

”==“:用来判断两个对象是否是同一个对象,也就是通过比拟两个对象的内存地址是否雷同判断是否是同一个对象

二、hashcode()办法

依据 hashCode 办法下面的正文失去以下 3 点:
1、同一个对象重复调用 hashCode 办法,返回的后果都是统一的。(前提是这个对象没被批改过)
2、如果应用 equals 办法比拟失去两个对象相等,那么这两个对象去调用 hashCode 办法返回的值是相等的
3、两个对象的 hashCode 值相等,两个对象不肯定相等

总结
1、默认的 equals() 办法比拟的是内存地址
2、而默认的 hashCode() 办法返回的是对象的内存地址转换成的一个整数,实际上指的的也是内存,两个办法能够了解为比拟的都是内存地址。

了解尚浅,仍得持续致力

正文完
 0