java的hashcode方法,如果字符串有空格,那么就会产生负数,汉字字符串太长也会产生负数,why?

`public class Main implements Abc {
public static void main(String[] args) {
System.out.println("asd 1212" .hashCode());
System.out.println("回家好看好看就好看捐款链接链接立刻冷静冷静冷静".hashCode());
}}`

阅读 2.4k
1 个回答

因为算法导致的巧合而已。

JDK 中 String.hashCode() 源码如下:

public int hashCode() {
    int h = hash;
    if (h == 0 && value.length > 0) {
        char val[] = value;

        for (int i = 0; i < value.length; i++) {
            h = 31 * h + val[i];
        }
        hash = h;
    }
    return h;
}

你逐个字符带入进去算就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题