在 java.lang.String.java 中显示,Java 只会在调用 hashcode() 之后生成哈希码,然后存储它,但为什么不在构造函数中制作哈希码呢?
相关代码:
if (h == 0 && count > 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
大多数情况下可以放在构造函数中。