【发布时间】:2016-01-12 19:19:43
【问题描述】:
Here what is written in String API for Hashcode------
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;
}
谁能解释这里的缓存是如何发生的?
一条线索是:---- if (h == 0 && value.length > 0) { 代码只会进入这个条件,然后才会计算哈希码,否则会写入相同的内容。但是对于使用 new 创建的两个字符串会发生这种情况:
String a = new String("abc"); 字符串 b = 新字符串(“abc”); 请解释一下
【问题讨论】:
-
两个不同的
Strings当然不会共享缓存值。
标签: java