« Je voudrais te parler peu de la comparaison de variables en Java. »

« Tu connais déjà les opérateurs de comparaison les plus simples : inférieur à (<) et supérieur à (>). »

« Absolument. »

« Il y a aussi des opérateurs comme égal à (==) et non égal à (!=). Mais aussi inférieur ou égal à (<=) et supérieur ou égal à (>=). »

« Ça commence à devenir intéressant. »

« Note bien qu'il n'y a pas d'opérateurs =< ou => en Java ! »

« Le signe = est utilisé pour les opérations d'affectation. C'est pourquoi nous utilisons deux signes égal (==) pour tester l'égalité. Pour vérifier si des variables ne sont pas égales, tu utilises l'opérateur !=. »

« Je vois. »

« Quand tu compares deux variables en Java en utilisant l'opérateur ==, tu compares le contenu des variables. »

« Ainsi, pour des variables primitives, leurs valeurs sont comparées. »

« Mais pour les variables de référence, ce sont les références qui sont comparées. Supposons que nous avons des objets identiques mais distincts. Comme leurs références sont différentes, une comparaison montrera qu'ils ne sont pas égaux, c'est-à-dire que le résultat de la comparaison sera false. Une comparaison de références ne renverra true que si les deux références désignent le même objet. »

« Pour comparer le contenu interne d'objets, nous utilisons la méthode spéciale equals. Cette méthode (tout comme toutes les méthodes de la classe Object) est ajoutée à ta classe par le compilateur, même si tu ne la déclares pas. Je vais te montrer quelques exemples : »

Code Explication
1
int a = 5;
int b = 5;
System.out.println(a == b);
Compare des types primitifs.
true s'affichera à l'écran.
2
Cat cat1 = new Cat("Oscar");
Cat cat2 = cat1;
System.out.println(cat1 == cat2);
Compare des références.
true s'affichera à l'écran.
Les deux variables stockent des références au même objet.
3
String s = new String("Mom");
String s2 = s;
System.out.println(s == s2);
Compare des références.
true s'affichera à l'écran.
Les deux variables stockent des références au même objet.
4
Cat cat1 = new Cat("Oscar");
Cat cat2 = new Cat("Oscar");
System.out.println(cat1 == cat2);
Compare des références.
false s'affichera à l'écran.
Les deux variables font référence à des objets Chat identiques, mais pas le même.
5
String s = new String("Mom");
String s2 = new String("Mom");
System.out.println(s == s2);
Compare des références.
false s'affichera à l'écran.
Les deux variables font référence à des objets String identiques, mais pas le même.
6
String s = new String("Mom");
String s2 = new String("Mom");
System.out.println(s.equals(s2));
Compare des objets.
true s'affichera à l'écran.
Les deux variables font référence à des objets String distincts, mais identiques.

« Oh, j'avais presque oublié ! Voici quelques exercices pour toi. »