hashCode()与equals()的相关规定:
- 如果两个对象相等,则hashCode一定也是相同的
- hashCode是JDK根据对象的地址或者字符串以及数字算出来的int类型的数值
- 两个对象相等,则他们的equals方法返回true
- 两个对象有相同的hashCode值,它们也不一定相等
- 因此,equals方法被覆盖重写,则hashCode方法也必须被覆盖重写
- hashCode()的默认行为是对堆上的对象产生独特值.如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据).
== 与 equals 的区别
- == 是判断两个变量或者实例是不是指向同一个内存空间;
- equals是判断两个变量或者实例所指向的内存空间的值是不是相同