可能是重复问题:
为什么Java中String的hashCode()方法使用31作为乘数?
@Override public int hashCode() {
int result = 17 + hashDouble(re);
result = 31 * result + hashDouble(im);
return result;
}
这是《Effective Java》中的代码。企业应用程序中广泛使用吗?我担心添加静态值。或者我们应该将17和31定义为某种实用程序类中的final变量,并从那里引用它们?
另外,有人能解释一下这些数字的作用吗?31只是随机选择的素数吗?