hashCode、equals 和 == 是 Java 中三种不同层面的比较方式:
1)== 比较的是内存地址,看两个引用是不是指向堆里同一块内存。对于基本类型,直接比值。
2)equals 比较的是对象内容,Object 类默认实现就是 ==,但我们通常会重写它来定义"内容相等"的逻辑。比如两个 User 对象,id 一样就算相等。
3)hashCode 返回一个整数哈希值,主要给 HashMap、HashSet 这类哈希结构用,快速定位对象在数组中的槽位。哈希码不同,对象肯定不相等;哈希码相同,对象不一定相等。