有人可以告诉我 Java
int
方法可以返回的最大和最小 String.hashCode()
值是多少吗?
String.hashCode()
返回使用以下公式计算的 int
:
public int hashCode()
返回该字符串的哈希码。
String 对象的哈希码计算如下
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用int运算,其中
是字符串的第i个字符,n是字符串的长度,^表示 求幂。 (空字符串的哈希值为零。)s[i]
可以通过以下常数找到最小值和最大值。
System.out.println(java.lang.Integer.MAX_VALUE); // 2147483647
System.out.println(java.lang.Integer.MIN_VALUE); // -2147483648
Java int 是 4 个字节,有符号(二进制补码)。 -2,147,483,648 至 2,147,483,647。与所有数字类型一样,int 可以转换为其他数字类型(字节、短整型、长整型、浮点型、双精度型)。当完成有损转换(例如 int 到 byte)时,转换将以较小类型的长度为模完成。
从文档中,考虑到某些东西的幂取决于字符串的长度(据我所知,这实际上是无限的),我想说最大值和最小值必须是 Integer.MAX_VALUE (2^分别为 31 - 1) 和 Integer.MIN_VALUE (-2^31)。