我说的是 Java。
String str= "abcd";
str.hashCode();
我的问题是什么时候计算哈希码? @第 1 行或@第 2 行?
我假设哈希码是预先计算的。每当更新字符串时,哈希码也会“可能”更新。
或者它的另一种方式,即每次调用 str.hashCode()
java 都会使用描述的公式计算它 here .
最佳答案
字符串无法更新,因为它们是不可变的,并且值在计算一次后被缓存:
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;
}
关于java - java中的String hashCode是预先计算的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569651/