1.Object的equals方法?
equals在非空对象的引用上实现了等值关系:
(1)自反性:x.equals(x),值为true。
(2)相称性:x.equals(y),值为true;y.equals(x),值为true。
(3)传递性:x.equals(y),值为true;y.equals(z),值为true;x.equals(z),值为true。
(4)一致性:x.equals(y),值为true;多次调用后,值还是true。
(5)x.equals(null),值为false。
注:重载此方法,一般应同时重载hashCode方法。这样做的目的是维护hashCode方法的公共约定;值相等的对象,hashCode也相同。
2.Object的hashCode方法?
返回对象的hash值。这个方法为Hashtable提供支持。
hashCode的公共约定:
(1)Java应用程序的执行过程中,多次调用同一对象的hashCode方法,返回的值应该相同。该对象的equals方法被修改后,此值不受影响。应用程序的两次执行过程中,不需要维护这个值的一致性。
(2)如果两个对象通过equals方法比较,为true。则分别调用两个对象的hashCode方法,应该返回相同的整数值。
(3)对下列情况不做要求。如果两个对象通过equals方法比较不相等,分别调用两个对象的hashCode方法,必须制造出不同的整数值。无论如何,程序员应该注意到,两个不同的对象拥有不同的hashCode值,可以改善Hashtable的性能。
Object类方法详解
本文详细介绍了Java中Object类的equals方法和hashCode方法。equals方法确保了对象间的等值关系遵循自反性、相称性、传递性和一致性原则,并且规定了与null比较时的行为。hashCode方法则用于返回对象的hash值,支持Hashtable操作。为了维护hashCode方法的公共约定,当重写equals方法时,通常也需要重写hashCode方法。

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



