Ich habe den Code wie folgt:Warum gibt die String.intern() -Methode zwei verschiedene Ergebnisse zurück?
public static void main(String[] args) {
String str1 = new StringBuilder("计算机").append("软件").toString();
System.out.println(str1.intern()==str1);
String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern()==str2);
String str3 = new StringBuilder("Str").append("ing").toString();
System.out.println(str3.intern()==str3);
}
und ich habe das Ergebnis:
true
false
true
kann ich verstehen, warum line1 und line3 wahr ist, aber ich bin Ausgabe über die Linie 2, warum diese ist falsch?
Meine Java ist: java version "1.8.0_73"
weil ' "java"' ist offensichtlich bereits in der konstant erhalten pool, also gibt 'str2.intern() 'nur diese Referenz zurück, die sich von der neuen Referenz' str2 'unterscheidet. – Tom
@Tom Warum das "Java" schon im Konstanten Pool? und warum "String" nicht ist? – Timi