GeeksforGeeks

En général, les deux equals() et l’opérateur « == » en Java sont utilisés pour comparer des objets afin de vérifier l’égalité mais voici quelques différences entre les deux :

  1. La principale différence entre la méthode .equals() et l’opérateur == est que l’une est une méthode et l’autre un opérateur.
  2. Nous pouvons utiliser les opérateurs == pour la comparaison de références (comparaison d’adresses) et la méthode .equals() pour la comparaison de contenu. En termes simples, == vérifie si les deux objets pointent vers le même emplacement mémoire alors que .equals() évalue la comparaison des valeurs dans les objets.
  3. Si une classe ne surcharge pas la méthode equals, alors par défaut elle utilise la méthode equals(Object o) de la classe parente la plus proche qui a surchargé cette méthode. Voir ceci pour le détail
  4. Exemple de codage :

    public class Test {
    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));
    }
    }

    
    

    
    

    Sortie :

    falsetrue

    Explication : Nous créons ici deux objets à savoir s1 et s2.

    • Les deux s1 et s2 font référence à des objets différents.
    • Lorsque nous utilisons l’opérateur == pour la comparaison de s1 et s2 alors le résultat est faux car les deux ont des adresses différentes en mémoire.
    • En utilisant equals, le résultat est vrai car il ne fait que comparer les valeurs données dans s1 et s2.

Comprenons les deux opérateurs en détail:

Opérateur d’égalité(==)

Nous pouvons appliquer les opérateurs d’égalité pour tous les types primitifs, y compris le type booléen. nous pouvons également appliquer les opérateurs d’égalité pour les types d’objets.

class Test {
public static void main(String args)
{
System.out.println(10 == 20);
System.out.println('a' == 'b');
System.out.println('a' == 97.0);
System.out.println(true == true);
}
}



Sortie :

falsefalsetruetrue

Si nous appliquons == pour les types d’objets alors, il devrait y avoir une compatibilité entre les types d’arguments (soit enfant à parent ou parent à enfant ou même type). Sinon, nous aurons une erreur de compilation.

class Test {
public static void main(String args)
{
Thread t = new Thread();
Object o = new Object();
String s = new String("GEEKS");
System.out.println(t == o);
System.out.println(o == s);
System.out.println(t==s);
}
}



Sortie :

falsefalse// error: incomparable types: Thread and String

.equals()

En Java, la méthode string equals() compare les deux chaînes de caractères données en fonction des données/contenu de la chaîne. Si tous les contenus des deux chaînes de caractères sont identiques alors elle renvoie true. Si tous les caractères ne correspondent pas alors elle renvoie false.

public class Test {
public static void main(String args)
{
Thread t1 = new Thread();
Thread t2 = new Thread();
Thread t3 = t1;
String s1 = new String("GEEKS");
String s2 = new String("GEEKS");
System.out.println(t1 == t3);
System.out.println(t1 == t2);
System.out.println(s1 == s2);
System.out.println(t1.equals(t2));
System.out.println(s1.equals(s2));
}
}



Sortie :

truefalsefalsefalsetrue

Explication : Ici, nous utilisons la méthode .equals pour vérifier si deux objets contiennent les mêmes données ou non.

  • Dans l’exemple ci-dessus, nous créons 3 objets Thread et 2 objets String.
  • Dans la première comparaison, nous vérifions si t1 == t3 ou non. Comme nous savons que les deux t1 et t3 pointent vers le même objet c’est pourquoi il retourne vrai.
  • Dans la deuxième comparaison, nous utilisons l’opérateur « == » pour comparer les objets chaînes et non le contenu des objets. Ici, les deux objets sont différents et donc le résultat de cette comparaison est « False »
  • Lorsque nous comparons 2 objets String par l’opérateur .equals() alors nous vérifions que est les deux objets contiennent les mêmes données ou pas.
  • Les deux objets contiennent la même chaîne de caractères c’est-à-dire GEEKS c’est pourquoi il retourne vrai.

Cet article est contribué par Bishal Kumar Dubey. Si vous aimez GeeksforGeeks et que vous souhaitez contribuer, vous pouvez également écrire un article en utilisant contribute.geeksforgeeks.org ou envoyer votre article par courrier à [email protected]. Voyez votre article apparaître sur la page principale de GeeksforGeeks et aidez d’autres Geeks.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.