首页 > 解决方案 > 无论使用文字还是新创建的所有字符串的哈希值都是相同的

问题描述

我使用字符串文字创建了 3 个字符串 2,使用 new 创建了一个。但是当我为他们打印哈希码时,它会给出相同的哈希码。我对它如何返回相同的哈希码感到困惑。请在下面找到示例。

public class StringTest
{

    public static void main(String[] args)
    {

        String str = "abc";
        String str1 = "hfdjkfhs";

        System.out.println("hashValue str:::" + str1.getClass().hashCode());
        System.out.println("hashValue str:::" + str.getClass().hashCode());

        String str2 = new String("def");

        System.out.println("hashValue:::" + str2.getClass().hashCode());

    }

}

输出 :-

哈希值 str1:::366712642

哈希值 str:::366712642

哈希值 str2:::366712642

标签: javastring

解决方案


您正在打印String类的哈希码,而不是创建的String对象。

代替:

str.getClass().hashCode()

你应该有:

str.hashCode()

推荐阅读