Mögliches Duplikat:
Java-Zeichenketten und StringPool
Ich habe zwei Strings erstellt
String s1="MyString";
String s2=new String("MyString");
System.out.println(s1==s2);
Es druckt "false"
. wir wissen, dass der String-Pool nicht zwei Objekte für dasselbe String-Literal erstellt.
Was geschieht dann hier? Es werden zwei verschiedene String-Objekte (Literale) im String-Pool für dasselbe String-Literal "MyString" erstellt.
Ich weiß equals()
Methode gibt zurück true
hier.
aber wenn wir ==
es sollte zwei Referenzen vergleichen und sie sollten sich auf dieselbe String-Objekt im String-Konstanten-Pool verweisen.
Warum wird nicht auf das vorhandene String-Objekt im String-Pool verwiesen, auch wenn es eine Übereinstimmung findet?