Cet article présente principalement des informations pertinentes sur la comparaison entre String.equals et == en java. Les amis qui en ont besoin peuvent s'y référer
Comparaison entre String.equals et == en java<.>
J'apprends Java depuis un moment, mais hier soir j'ai été soudainement contrarié par "asd"==getpara("password") : en effet, beaucoup de choses en JAVA sont complètement différentes des langages J'ai déjà été exposé à. , comme le plus simple new String("asd") !=new String ("asd").1 Le programme le plus simple :
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); } }Certainement, beaucoup de gens disent, sortie vrai, en effet la sortie est vraie, s1 et s2 font référence à la même chose. Mais si ce programme était écrit différemment, il serait certainement différent.
2 Première variante :
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }ou :
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }Ensuite, le résultat est un peu incertain. Certaines personnes ont de mauvaises idées si elles sont prises séparément, au moins l'une d'entre elles ne sera certainement pas égale. Les résultats de ces deux programmes sont faux. La raison est très simple. JAVA est un langage fondamentalement entièrement orienté objet. s1 == s2 détermine sa référence (équivalente à l'adresse mémoire et au pointeur). la propre méthode de l'objet pour déterminer si les valeurs sont égales. Dans l'expression suivante :
String s1 = "Hello"; String s2 = new String("Hello");La JVM reçoit deux messages différents :
2. Je souhaite créer une nouvelle chaîne "Bonjour", différente de celle d'origine.
3 La deuxième variante :
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); s2=s2.intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }Mélangez la commande :
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); String s2 = new String("Hello"); s2=s2.intern(); //也可以String s2 = new String("Hello").intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }Alors cette fois ça devrait être clair =
4 fonctions internes :
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!