对象是否相等的规则1判断两个对象的hashCode是否相等;如果不相等,认为两个对象也不相等,完毕.2如果相等,再调用equals方法.输出结果:false问题:判断两个对象的hashCode是否相等,但为什...
对象是否相等的规则
1 判断两个对象的hashCode是否相等; 如果不相等,认为两个对象也不相等, 完毕.
2 如果相等, 再调用equals方法.
输出结果:false
问题: 判断两个对象的hashCode是否相等 , 但为什麼没有进入hashCode()里 列印出 "checking hashCode"?
代码:
import java.util.*;
class MapDemo2
{
public static void main(String[] args)
{
Person p1 = new Person("p1",15);
Person p2 = new Person("p2",16);
System.out.println(p2==p1);
}
}
class Person
{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public int hashCode()
{
System.out.println("checking hashCode");
return this.age*29;
}
public boolean equals(Object obj)
{
System.out.println("processing equals");
if(!(obj instanceof Person))
throw new ClassCastException("类型不匹配");
Person p = (Person)obj;
return this.name.equals(p.name);
}
}
展开