nt hashCode() Returns a hash code value for the object. 当你覆写(override)了equals()方法之后,必须也覆写hashCode()方法,反之亦然。 这个方法返回一个整型值(hash code value),如果两个对象被equals()方法判断为相等,那么它们就应该拥有同样的hash code。 Object类的hashCode()方法为不同的对象返回不同的值,Object类的hashCode值表示的是对象的地址。 hashCode的一般性契约(需要满足的条件)如下: 1.在Java应用的一次执行过程中,如果对象用于equals比较的信息没有被修改,那么同一个对象多次调用hashCode()方法应该返回同一个整型值。 应用的多次执行中,这个值不需要保持一致,即每次执行都是保持着各自不同的值。 2.如果equals()判断两个对象相等,那么它们的hashCode()方法应该返回同样的值。 3.并没有强制要求如果equals()判断两个对象不相等,那么它们的hashCode()方法就应该返回不同的值。 即,两个对象用equals()方法比较返回false,它们的hashCode可以相同也可以不同。但是,应该意识到,为两个不相等的对象产生两个不同的hashCode可以改善哈希表的性能。 String toString() Returns a string representation of the object. 当打印引用,如调用System.out.println()时,会自动调用对象的toString()方法,打印出引用所指的对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,因此每个类都有toString()方法。 Object类中的toString()方法定义如下: - public String toString()
- {
- return getClass().getName() + "@" + Integer.toHexString(hashCode());
- }
复制代码
|