字符串取得hashCode源码
- public int hashCode() {
- int h = hash; //hash默认为o
- 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;
- }
复制代码
之所以你认为他们应该相同 是因为Object类的hashCode()是返回的是有存储地址经过hash算法得出的值 地址不同得出的值也不同,而String它的hash码是通过上面计算的,字符相同计算结果自然也相同,和存储地址无关 |