Le signe
== compare les valeurs lors de la comparaison des types de données de base, tandis que lorsque vous utilisez le signe == pour comparer deux objets, il compare les valeurs d'adresse des deux objets
. Equals() ne le fait pas. En cas d'écrasement, l'adresse mémoire est comparée, mais la plupart des classes en Java ont remplacé la méthode equals(), donc la valeur de comparaison est
String str1 = "abc"; String str2 = "abc"; System.out.println(str1.equals(str2)); System.out.println(str1 == str2);
Dans ce cas, true. et true sont renvoyés, et deuxième La raison pour laquelle == renvoie également true :
Parce que le pool de constantes en mémoire appartient à la zone de méthode, lorsque str1 est créé, il n'y a pas de pool de constantes, donc l'objet " abc" est créé dans le pool constant, et lorsque str2 est créé, existe déjà dans le pool constant, il sera donc utilisé directement lors de sa deuxième création, donc l'adresse est la même
S'il est remplacé par
String str1 = new String("abc"); String str2 = new String("abc");
str1==str2 renvoie false, car il est créé Il y a deux objets avec des adresses différentes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!