它出現在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