Avatar ·

Quelle est la différence entre == et equals() en Java?

Bonjour, collègues! Je viens de commencer à apprendre Java et j'ai rencontré une situation confuse lors de la comparaison de chaînes. J'ai écrit un code simple: ```java String a = "Привет"; String b = "Привет"; String c = new String("Привет"); System.out.println(a == b); // true System.out.println(a == c); // false System.out.println(a.equals(c)); // true ``` Pourquoi `a == b` retourne `true`, mais `a == c` — `false`? Et quel est le rôle de `equals()`? Je pensais que les deux opérateurs comparent les valeurs. Où est le piège? Expliquez, s'il vous plaît, comme à un débutant, quand utiliser `==` et quand utiliser `equals()`. Je suis particulièrement intéressé par la façon dont cela fonctionne avec les chaînes et autres objets. <<>>

Différence principale: comparaison de références vs comparaison de contenu

La différence clé entre == et equals() en Java réside dans ce qu'ils comparent exactement:

  • == — est un opérateur de comparaison de références. Il vérifie si deux variables pointent vers le même objet en mémoire.
  • equals() — est une méthode qui compare le contenu (ou l'état) des objets. Par défaut, elle se comporte comme ==, mais elle peut être redéfinie (overridden) dans une classe pour comparer les valeurs, comme c'est le cas pour String.