11 Vote

Java: Différence entre == et .equals()

Question de Invité | 23/09/2020 à 14:40

En Java, vous semblez pouvoir comparer une chaîne / string de deux manières différentes. Une fois avec == et une fois avec .equals().

J'ai testé les deux méthodes et les deux méthodes me donnent les mêmes résultats (TRUE si la chaîne est identique, FALSE sinon).

Alors, pourquoi y a-t-il pas deux méthodes pour faire la même chose? Ou y a-t-il effectivement une différence cachée et il y a des possibilités dans lesquelles on devrait préférer l'une des voies?

RépondrePositifNégatif
Avatar
1Meilleure Réponse1 Vote

La comparaison avec == et avec .equals() ne conduit au même résultat que si non seulement le contenu des variables comparées est égal mais aussi la référence des objets comparés.

  • La comparaison avec == consiste à tester une référence identique
  • La comparaison avec .equals() consiste à tester un contenu identique (également dans le cas où la référence est différente)

Par exemple, en supposant que vous ayez deux variables chaîne ayant le même contenu mais des références différentes, la comparaison == renvoie néanmoins false:

String a = new String("abc");
String b = new String("abc");
String c = a;

if (a == b) {}      // FALSE
if (a.equals(b)) {} // TRUE
if (b.equals(a)) {} // TRUE

if (a == c) {}      // TRUE
if (a.equals(c)) {} // TRUE
if (c.equals(a)) {} // TRUE

Les variables a et b sont des objets indépendants et ont donc également des références indépendantes différentes même si leur contenu est le même. Par conséquent, la comparaison a == b renvoie FALSE.

Si nous voulons plutôt comparer le contenu, nous utilisons .equals(). Cela renvoie TRUE car les deux chaînes ont la valeur "abc".

La chaîne c a la même révérence que la chaîne a. Par conséquent, la comparaison avec == ainsi qu'avec .equals() retourne TRUE.
24/09/2020 à 22:47

RépondrePositif Négatif
Répondre

Sujets Connexes

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.