6

有人能告诉我intJavaString.hashCode()方法可以返回的最大值和最小值是多少吗?

4

3 回答 3

8

String.hashCode ()返回int使用以下公式计算的:

公共 int hashCode()

返回此字符串的哈希码。

String 对象的哈希码计算为

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

使用 int 算术,其中s[i]是字符串的第i个字符,n是字符串的长度,^ 表示求幂。(空字符串的哈希值为零。)


可以使用以下常量找到最小值和最大值。

 System.out.println (java.lang.Integer.MAX_VALUE); //  2147483647
 System.out.println (java.lang.Integer.MIN_VALUE); // -2147483648
于 2012-07-14T00:44:16.720 回答
3

Java int 是 4 个字节,有符号(二进制补码)。-2,147,483,648 至 2,147,483,647。像所有数字类型一样,int 可以转换为其他数字类型(byte、short、long、float、double)。当有损转换完成时(例如 int 到 byte),转换是以较小类型的长度为模完成的。

于 2012-07-14T00:46:28.423 回答
2

从文档中,鉴于某些东西的提升取决于字符串的长度(据我所知,这实际上是无限的),我会说最大值和最小值必须是 Integer.MAX_VALUE (2^31 - 1) 和 Integer.MIN_VALUE (-2^31),分别。

于 2012-07-14T00:44:03.613 回答