Mam następujące linie kodów do porównania String. str1 nie jest równe str2, co jest zrozumiałe, ponieważ porównuje odniesienie do obiektu. Ale dlaczego s1 jest równy s2?Co sprawia, że porównanie porównawcze (==) działa dla niektórych ciągów w Javie?
String s1 = "abc";
String s2 = "abc";
String str1 = new String("abc");
String str2 = new String("abc");
if (s1==s2)
System.out.println("s1==s2");
else
System.out.println("s1!=s2");
if (str1==str2)
System.out.println("str1==str2");
else
System.out.println("str1!=str2");
if (s1==str1)
System.out.println("str1==s1");
else
System.out.println("str1!=s1");
wyjściowa:
s1==s2
str1!=str2
str1!=s1
Próbowałaś szukają więc najpierw? :( –
http://stackoverflow.com/questions/7144059/java-string-pool-object-creation, http://stackoverflow.com/questions/4033625/if-compares-references-in-java-why-does -it-assess-to-true-with-this-strin, http://stackoverflow.com/questions/6377058/string-reference, http://stackoverflow.com/questions/1903094/java-strings-and-stringpool –
(Nie zamykam tego, ponieważ nie znalazłem innego pytania * tak skupionego * jak to, ale jestem pewien, że istnieje) –