默认的HashCode值(也就是Hash值)的运算方式

mac2022-06-30  23

默认的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

最新回复(0)