Maison > Java > javaDidacticiel > le corps du texte

Développement Java == et égal()

无忌哥哥
Libérer: 2018-07-23 09:48:46
original
2064 Les gens l'ont consulté

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);
Copier après la connexion

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");
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal