hashCode方法:
int hashCode()返回对象的散列码,散列码可以是任意的整数或负数。两个相等的对象要求返回相等的散列码。
请看上面的例子:
String s="ok";
StringBuilder sb=new StringBuilder(s);
system.out.println(s.hashCode()+" "+sb.hashCode());
String t=new String("ok");
StringBuilder tb=new StringBuilder(t);
system.out.println(t.hashCode()+" "+tb.hashCode());
对象 散列码
s 2556
sb 20526976
t 2556
tb 20527144
字符串s与t拥有相同的散列码,这是因为字符串的散列码是由内容导出的(String类重写了从Object类继承的hashCode方法),而字符串缓冲流sb与tb却有着不同散列码,这是因为 StringBuilder 类中没有重写hashCode()方法,它的散列码是由object类默认hashCode方法导出的对象的存储地址
注意:由于hashCode方法定义在object类中,因此每个对象都有一个默认的散列码,其值是对象的存储地址)
同一个对象它们的散列码一定相等,但散列码相同不一定是同一个对象!
equals方法:
用hashCode方法比较过,在用重写的equals方法,比较对象的内容