日期:2014-05-20  浏览次数:20634 次

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的吗??劳请各位大哥指教一下。

------解决方案--------------------
探讨
…………
我想问一下,int型的数值范围不是在-32768~+32767之间的吗,为什么结果会有1738489253这么大的数值啊??
还有哦,就是有1738489253,那么1738489253 % 6 是取模运算吧,怎么得5出来的,不是得8的吗??劳请各位大哥指教一下。