Différence entre equals() et == en Java
Il y a une différence majeure entre l’opérateur == et la méthode equals(). L’opérateur == est un opérateur de comparaison particulièrement utile pour comparer des valeurs de types primitives int, float, double, etc. mais lorsqu’il s’agit des objet, il n’est plus utile. C’est pour cela on utilise la méthode equals() qui appartient à la classe Object. L’opérateur == compare les références des deux objets, tandis que la méthode equals() compare les valeurs des deux objets.
La méthode equals()
La méthode equals() compare la « valeur » des objets(e.g objet String), indépendamment du fait que les deux références d’objet se réfèrent ou non à la même instance. Si les deux références d’objet de type String font référence à la même instance String, alors c’est parfait! Si les deux références d’objet font référence à deux occurrences String différentes, cela ne fait aucune différence. C’est la « valeur » (c’est-à-dire: le contenu de la chaîne de caractères).
L’opérateur « == »
l’opérateur « == » compare les références de l’objet pour voir si elles font référence à la même instance String. Si la valeur des deux références d’objet « fait référence à » la même instance String, le résultat de l’expression booléenne serait « True ». Si, en revanche, la valeur des deux références d’objet « fait référence à » différentes instances même si les deux occurrences de String ont la même « valeur ». Le résultat de l’expression booléenne serait « False ».
Exemple :
public class Exemple{ public static void main(String[] args) { String str1 = new String("WayToLearnX"); String str2 = new String("WayToLearnX"); System.out.println(str1 == str2); System.out.println(str1.equals(str2)); } }
La sortie :
false true