闲来无事,看java源码。Talk is cheap, show me the code.
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;
}
如果你是第一次看,你可能会问hash和value是什么?
/** Cache the hash code for the string */
private int hash; // Default to 0
可以看到,变量hash用于缓存这个字符串的哈希码,注意hash是int类型哟!曾经有面试官问过。
一个字符串的哈希码只算一次,就被缓存下来,以后就不用重复劳动啦。
/** The value is used for character storage. */
private final char value[];
value