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
1 2 3 4 |
|
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
1 2 |
|
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!