La différence entre égaux et == en java
Les types de données en Java peuvent être divisés en deux catégories:
1. Type de données de base, également connu sous le nom de type de données primitif. octet, court, char, int, long, flottant, double, booléen
La comparaison entre eux, en appliquant un double signe (==), est comparée à leurs valeurs.
2. Type de données compatissant (classe)
Lorsqu'ils se comparent avec (==), ils comparent leur adresse de stockage en mémoire. Par conséquent, à moins qu'ils ne soient des objets du même nouveau, le résultat après comparaison est vrai, sinon le résultat après comparaison est faux. Toutes les classes de Java héritent de l'objet de classe de base. Une méthode d'égaux est définie dans la classe de base dans l'objet. Le comportement initial de cette méthode est l'adresse mémoire de l'objet de comparaison, mais dans certaines bibliothèques de classe, cette méthode est écrasée. Par exemple, String, Integer et Date ont leur propre implémentation dans ces classes et ne sont plus l'adresse de stockage de la classe de comparaison dans la mémoire du tas.
Pour la comparaison égale entre les types de données composites, sans écraser la méthode égaux, leur comparaison est basée sur la valeur d'adresse de leur emplacement de stockage en mémoire. Parce que la méthode d'objet équivalente est également comparée à un signe double égal (==), le résultat après comparaison est le même que le résultat du signe double égal (==).
La différence entre Java Equals et =, ==
1. La différence entre == et égal
1. == est l'opérateur
2. Égal est une méthode d'objet String
Il existe généralement deux types de comparaisons
1. Comparaison des types de données de base
2. Comparaison des objets de référence
1. Comparaison des types de données de base
== et égal à comparer si les valeurs sont égales, si elles sont égales, elle est vraie, sinon elle est fausse
2. Comparaison des objets de référence
== et les égaux sont tous deux par rapport à la question de savoir si les adresses dans la mémoire de la pile sont égales. S'il est égal, c'est vrai, sinon c'est faux.
Avis:
1. La chaîne est un type de données de référence spécial. == Compare si l'adresse de référence de l'objet String est la même, et égal à compare si le contenu dans la pile est cohérent.
String ss = new String ("ABC"); String sss = new String ("ABC"); if (ss == sss) {System.out.println ("ss == sss est vrai"); } if (ss.equals (sss)) {System.out.println ("SS est égal à SSS est vrai"); }Sortie de la console:
SS! = SSS
SS est égal à SSS
Indique que les adresses de mémoire de SS et SS dans la pile sont différentes, mais le contenu dans le tas est le même.
String ss = new String ("ABC");
Chaîne ssss = ss;
// jugez si les adresses de référence de SS et SSS dans la pile sont les mêmes si (ss == SSSS) {System.out.println ("SS == SSSS"); } else {System.out.println ("SS! = SSSS"); } // juger si le contenu de SS et SSSS dans le tas est le même if (ss.equals (ssss)) {System.out.println ("SS est égal à SSSS"); } else {System.out.println ("SS Not Equal SssSS"); }Sortie de la console:
SS == SSSS
SS est égal à SSSS
Cela montre que SS et SSS sont les mêmes objets et qu'ils ont le même contenu dans le tas
2. Comparaison des objets de référence
TestBean obj1 = new TestBean (); TestBean obj2 = new TestBean (); Testbean obj3 = obj1; if (obj1 == obj2) {System.out.println ("obj1 == obj2"); } else {System.out.println ("Obj1! = Obj2"); } if (obj1 == obj3) {System.out.println ("obj1 == obj3"); } else {System.out.println ("Obj1! = Obj3"); }Sortie de la console:
obj1! = Obj2
obj1 == obj3
Cela signifie que Obj1 et Obj2 ne sont pas le même objet, et l'adresse de référence dans la pile est différente
Obj1 et Obj3 sont les mêmes objets, et l'adresse de référence dans la pile est la même
2. La différence entre = et égaux ==
= représente l'attribution, c'est-à-dire attribuer la valeur à droite de = à la variable à gauche. égaux et == sont les opérations
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!