改善这个问题
来自链接:
http://www.tutorialspoint.com/java/java_string_hashcode.htm
Java中的hashCode和equals方法之间的关系
好的hashCode()实现
但是我不了解哈希码。
这是一个例子:
public class StringDemo { public static void main(String args[]){ String strob1="first string"; System.out.println(strob1.hashCode()); } }
这个简单的程序给我输出:-5468287
-5468287
谁能告诉我:它是如何给我的输出:-5468287?
字符串的 哈希码 计算如下:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
使用int算术,其中字符串s[i]的i第-个字符,字符串n的长度,并^表示 幂 。(空字符串的哈希值为零。)
int
s[i]
i
n
^
因此,根据 Java语言规范15.8.2 ,此整数计算的溢出很容易发生,结果为负数:
如果整数加法溢出,则结果是数学和的低阶位,以某种足够大的二进制补码格式表示。如果发生溢出,则结果的符号与两个操作数值的数学和的符号不同。