它出现在java.lang.String.java中,Java将只生成哈希码,然后在调用hashcode()之后将其存储,但为什么不直接在构造函数中创建哈希码?为什么懒惰生成Java String哈希码?
相关的代码:
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;
}
可能大部分被放置在构造函数中。
如果您发现一个可以接受的答案,您可以勾选它让人们知道您有问题的答案。 – 2012-02-17 08:34:12