我很奇怪,因为即使我使用了 new() 方法来分配字符串。为什么我的两项任务都获得相同的位置?
String str3 = new String("AVI");
String str4 = new String("AVI");
System.out.println(str3.hashCode());
System.out.println(str4.hashCode());
输出: 65204 65204
PS: 我从这个网站读到了这个概念。 https://www.geeksforgeeks.org/g-fact-46/
我有什么错误吗?
您的代码没有错误。 str3 和 str4 获得相同哈希码的原因是 Java 的字符串 hashCode() 方法基于其内容,而不是其内存位置。当您使用 new 创建字符串时,它们具有相同的内容(“AVI”),因此它们具有相同的哈希码。在这种情况下,Java 不会执行字符串驻留。