Possible en double:
Difference Between Equals and ==
In JDK 1.6, can String equals operation can be replaced with ==?
How do I compare strings in Java?Résultat inattendu, lorsque l'on compare deux Java Strings avec "=="
Tout en jouant avec Java Strings, i n'espérait pas les résultats suivants:
public class Sandbox {
public static void main(String[] args) {
String a = "hello";
String b = "hello";
System.out.println(a == b); //true Why?, a and b both are seperate Objects
System.out.println(a == "hello"); //true Why?
System.out.println(a == new String(b)); //false As expected
}
}
Je m'attendais à ce que tout soit faux, puisque "==" compare les références. Pourquoi ce résultat?
Lorsque je change String b = "world"
, System.out.println(a == b);
renvoie false
. Il semble que le contenu du String-Object soit comparé.
Étant donné que Java 7 peut comparer les chaînes dans les instructions switch-case, j'ai pensé qu'il pourrait avoir quelque chose à voir avec la version Java. Mais comme décrit here, la méthode equals est invoquée lors de la comparaison de chaînes dans un Switch-Case.
Veuillez lire [this] (http://stackoverflow.com/questions/971954/difference-between-equals-and). – mre
En résumé, certaines chaînes sont internées (c'est-à-dire mises en cache) et font référence au même objet, ce qui explique pourquoi == peut fonctionner. Mais vous ne pouvez pas compter sur ce mécanisme et vous devez utiliser des égaux. – assylias
La ligne de fond est, comme une chaîne est encore et objet, donc dans la grande majorité des cas, vous devriez utiliser la méthode 'equals'. –