关于重写equals()和hashCode()的思考

最近这几天一直对equals()和hashCode()的事搞不清楚,云里雾里的。

为什么重写equals(),我知道。

但是为什么要两个都要重写呢,我就有点迷糊了,所以趁现在思考清楚后记录一下。

起因

无非就是一道面试题:“你重写过 equalshashcode 吗,为什么重写equals时必须重写hashCode方法?”

 

1.为什么要重写equals()

也不用多说大道理了,我们都知道Object类的equals()其实用的也是“==”。

关于重写equals()和hashCode()的思考

我们也知道“==”比较的是内存地址。

所以当对象一样时,它的内存地址也是一样的,所以此时不管是“==”也好,equals()也好,都是返回true。

例子

public static void main(String[] args) { String s = "大木大木大木大木"; String sb = s; System.out.println(s.equals(sb)); System.out.println(s == sb); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywxgj.html