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方法,比较对象的内容
本文深入探讨了hashCode方法和equals方法的实现原理。hashCode方法用于获取对象的散列码,两个相等的对象必须拥有相同的散列码。equals方法则用于判断两个对象是否相等,通常在重写hashCode方法时也会重写equals方法。
1047

被折叠的 条评论
为什么被折叠?



