默认的String类的HashCode值的运算方式
我们先写一个简单的String,看一下它的hashcode值
String str1="abc";
System.out.println(str1.hashCode());
值为:96354 然后我们进入hashCode()的源码看一看它的运算方式
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
h = 31 * h + val[i]; hash默认为0 h=31 * 0 + a = 97(第一次循环) h=31 * 97 + b = 3105(第二次循环) h=31 * 3105 + c= 96354(第三次循环) 所以 “abc”.hashCode() 的值为 96354