考虑下面给出的一段代码。我想知道字符串池“s1”或“s2”中存在的字符串如何具有与堆中存在的字符串相同的 hashCode 作为“s3”但在字符串池之外。
class Test{
public static void main(String[] args) {
String st1 = "Shiva";
String st2 = "Shiva";
String st3 = new String("Shiva");
System.out.println(st1 == st2);
System.out.println(st1 == st3);
System.out.println(st2 == st3);
System.out.println(st1.hashCode());
System.out.println(st2.hashCode());
System.out.println(st3.hashCode());
}
}
输入: deep (master *) LanguagePackageInJava $ javac Lecture3.java
输出: deep (master *) LanguagePackageInJava $ java Test
true
false
false
79855167
79855167
79855167
关于这个问题,我进行了很多搜索。请告诉我我在思考过程中哪里错了。