Maison  >  Article  >  Java  >  Développement Java == et égal()

Développement Java == et égal()

无忌哥哥
无忌哥哥original
2018-07-23 09:48:462063parcourir

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!

Déclaration:
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