String 和 Hashcode 需要解释

String and Hashcode need explanation

我这里有问题。我应该解释为什么我的字符串 "ab" returns 3105 当我在它上面使用 hashCode() .

我的主要问题是我不明白 s[0] 有哪个值。

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

谁能解释一下? 谢谢

假设你有一个字符串s = "ab"

  1. s[0]是第一个字母 s,意思是"a"等等。
    对于长度为 n 的字符串,最后一个索引将为 n-1。即 s的长度是2,s的最后一个字母是s[1]也就是"b".
  2. ABC 中的每个字母.. 都有一个数字 ascii 值,您可以在 ascii table.
  3. 中看到

字符串 "ab" 的哈希码是

'a'*31^1+'b'*31^0 = 'a'*31+'b'*1 = 97*31+98*1 = 3105