最近这几天一直对equals()和hashCode()的事搞不清楚,云里雾里的。
但是为什么要两个都要重写呢,我就有点迷糊了,所以趁现在思考清楚后记录一下。
起因
无非就是一道面试题:“你重写过 equals 和 hashcode 吗,为什么重写equals时必须重写hashCode方法?”
1.为什么要重写equals()
也不用多说大道理了,我们都知道Object类的equals()其实用的也是“==”。
我们也知道“==”比较的是内存地址。
所以当对象一样时,它的内存地址也是一样的,所以此时不管是“==”也好,equals()也好,都是返回true。
例子
public static void main(String[] args) { String s = "大木大木大木大木"; String sb = s; System.out.println(s.equals(sb)); System.out.println(s == sb); }