字符串的哈希值是通过字符串中的字符查表计算而出。相同的字符串哈希值是一样的。而==比较的是两个对象是否相同。
new String("123");它会产生两个对象。一个是 "123" 一个是"123"的副本。str01指向的是"123" , str02指向的是那个副本。还有字符串是一个常量,可以被共享。
下面是hashCode的计算方法。
String 对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。(空字符串的哈希值为 0。) |