Ho le seguenti righe di codici per confrontare String. str1 non è uguale a str2, che è comprensibile dal momento che confronta il riferimento all'oggetto. Ma allora perché s1 è uguale a s2?Ciò che rende il confronto dei riferimenti (==) funziona con alcune stringhe in Java?
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");
uscita:
s1==s2
str1!=str2
str1!=s1
Hai provato a cercare SO prima? :( –
http://stackoverflow.com/questions/7144059/java-string-pool-object-creation, http://stackoverflow.com/questions/4033625/if-compares-references-in-java-why-does -it-evaluate-to-true-with-these-strin, http://stackoverflow.com/questions/6377058/string-reference, http://stackoverflow.com/questions/1903094/java-strings-and-stringpool –
(Non sto chiudendo questo, perché non ho trovato un'altra domanda * come focalizzata * come questa, ma sono sicuro che esiste anche –