JAVA String的hashCode相同, 值不同的问题

java Stirng源码中对hashCode是这样定义的  public int hashCode() {  int h = hash;  if (h == 0) {      int off = offset;      char val[] = value;      int len = count;            for (int i = 0; i < len; i++) {                 h = 31*h + val[off++];             }             hash = h;         }         return h;     } 返回的 是一个字符串定义的int值; 那这里肯定就有机会返回的 hashCode值相同,而value值不同的结果 我改装一下程序, 可以如下: public static void main(String[] args) { String str = "hierarch"; System.out.println(hashCode(str)); String str2 = "crinolines"; System.out.println(hashCode(str2)); } public static int hashCode(String value) { int hash = 0; int h = hash; if (h == 0) { for (int i = 0; i < value.length(); i++) { h = 31 * h + value.charAt(i); } hash = h; } return h; } 打印值如下: hashCode相同,而值不同; -1732884796 -1732884796 所以在这里, 在重申一下, hashCode相同, 不一定两个字符串的值相同; 如果两个字符串值相同,那么hashCode一定相同; 这两个字符串的hashCode都相同;
"buzzards"  "righto" hashCode 相同; 
"hierarch"  "crinolines" hashCode相同;

爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img