一、在没有重写equals的类里,equals 就等于 a==b (即判断对象地址是否相等)
boolean equals(Object o){
return this==o;
}
return this==o;
}
二、有些类重写了 equals 方法,比如String
public class Ab{
public static void main(String a[]){
String a=new String("foo");
String b=new String("foo");
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
}
}
上面的例子说明String 的equals 被重写过了,比较的不是对象地址,而是对象内字符串是否相同。
三、hashcode 和 对象地址的关系
直接上例子:
现在有对象地址 1、2、3、4、5
hash算法是 : 除6 取余
地 址: 1、2、3、4、5
hashcode: 0 0 0 2 1
hashcode 一样 地址不一定一样,地址一样 hashcode 必定一样