java - 无论使用文字还是新创建的所有字符串的哈希值都是相同的
问题描述
我使用字符串文字创建了 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
解决方案
您正在打印String
类的哈希码,而不是创建的String
对象。
代替:
str.getClass().hashCode()
你应该有:
str.hashCode()
推荐阅读
- cookies - 使用多个 http 客户端时“共享”令牌 cookie
- ssh - 无法通过 ssh 连接到设备(仅在 Widonws10、Linux 和 MacO 上可以正常工作)
- winapi - C++ 打开一个文件以获取对话框然后如何导航到某个选项卡?
- kivy - 将 KivyMD 与 kivy-ios 一起使用时不显示图标
- ios - iOS Swift - UISlider - 添加第二个轨迹栏
- selenium - 如何将webdriver传递给selenium中页面对象模型中的其他页面
- php - 在我的 laravel 应用程序中单击博客文章上的显示更多按钮时,如何通过其 ID 显示特定的博客文章?
- ansible-awx - 在 Docker AWX 上安装 pynetbox
- python - 如何在tkinter中指定多个按钮的排列位置
- r - 决策树的“train”函数在选择最佳调谐时如何工作?