hashCode返回值的问题?急
源码:
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.File;
public class StringHashConv {
static public int hashCode(String str)
{
int hash = 0;
char[] val = str.toCharArray();
int len = val.length;
for (int i = 0; i < len; i++)
{
hash = 31 * hash + val[i];
}
if (hash < 0)
{
hash *= -1;
}
return hash;
}
public static void main(String[] args) throws Exception
{
String data = "山东万声通讯兰州分公司";
int j = hashCode(data);
System.out.println(j);
int i = j % 6;
System.out.println(i);
}
}
运行后结果:
1738489253
5
我想问一下,int型的数值范围不是在-32768~+32767之间的吗,为什么结果会有1738489253这么大的数值啊??
还有哦,就是有1738489253,那么1738489253 % 6 是取模运算吧,怎么得5出来的,不是得8的吗??劳请各位大哥指教一下。
------解决方案--------------------