本帖最后由 李铁 于 2012-10-22 21:47 编辑
class A{
public int hashCode(){
return 60;
}
}
public class HashSetDemo1 {
public static void main(String args[]){
A a1 = new A();
A a2 = new A();
[url=]//day29.A@3c^^^^^^day29.A@3c[/url]:只是对象的内容相等,也就是hashCode,
System.out.println(a1.toString()+"^^^^^^"+a2.toString());
System.out.println(a1==a2);//false--->原因是它们的句柄不相同的。
System.out.println(a1.equals(a2));//
false-->原因是equals()的默认行为比较句柄,你没有在你的类中重写equals();当然就不相等;只有你重写了equals()方法,比较才是内容,而非句柄
public boolean equals(Object obj) {
return (this == obj);//此处比较是句柄
}
}
} |