hashCode()与equals()的相关规定:
- 如果两个对象相等,则hashCode一定也是相同的
- hashCode是JDK根据对象的地址或者字符串以及数字算出来的int类型的数值
- 两个对象相等,则他们的equals方法返回true
- 两个对象有相同的hashCode值,它们也不一定相等
- 因此,equals方法被覆盖重写,则hashCode方法也必须被覆盖重写
- hashCode()的默认行为是对堆上的对象产生独特值.如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据).
== 与 equals 的区别
- == 是判断两个变量或者实例是不是指向同一个内存空间;
- equals是判断两个变量或者实例所指向的内存空间的值是不是相同
本文探讨了Java中equals()和hashCode()方法的规定及其相互关系。当两个对象相等时,它们的hashCode必须相同,但反之不成立。重写equals()时,通常需要同时重写hashCode()以确保一致性。此外,`==`比较对象引用,而equals()检查对象内容是否相等。了解这些区别对于理解Java对象比较至关重要。
514

被折叠的 条评论
为什么被折叠?



