– Chciałbym opowiedzieć Ci coś o porównywaniu zmiennych w Javie.

– Znasz już najprostsze operatory porównania – mniejszy niż (<) i większy niż (>).

– Tak.

– Są także takie operatory jak równy (==) i różny (!=). A także mniejszy bądź równy (<=) i większy bądź równy (>=).

– Zaczyna się robić interesująco.

– Zauważ, że w Javie nie ma operatorów =< i =>!

– Znak = jest używany do operacji przypisania. Dlatego właśnie dwa znaki równości (==) są używane do sprawdzania identyczności. Aby sprawdzić, czy zmienne są różne, użyj operatora !=.

– Rozumiem.

– Kiedy porównujemy dwie zmiennie w Javie, używając operatora ==, porównujemy ich zawartość.

– A zatem, dla zmiennych prostych to ich wartości są porównywane.

– W przypadku zmiennych referencyjnych porównywane są ich referencje. Załóżmy, że mamy identyczne, ale odrębne obiekty. Ponieważ referencje do nich się różnią, porównanie pokaże, że nie są one równe, np. wynik porównania będzie false (fałszywy). Porównanie referencji będzie true (prawdziwe), tylko jeśli obie referencje wskazują na ten sam obiekt."

– Aby porównać wewnętrzne zawartości obiektów, używamy specjalnej metody equals (jest równy). Ta metoda (i wszystkie metody klasy Obiektu) są dodawane do Twojej klasy przez kompilator, nawet jeśli ich nie zadeklarujesz. Pokażę Ci kilka przykładów:

Kod Wyjaśnienie
1
int a = 5;
int b = 5;
System.out.println(a == b);
Porównaj proste typy.
Na ekranie zostanie wyświetlone true.
2
Kot kot1 = new Kot("Oskar");
Kot kot2 = kot1;
System.out.println(kot1 == kot2);
Porównaj referencje.
Na ekranie zostanie wyświetlone true.
Obie zmienne przechowują referencje do tego samego obiektu.
3
String s = new String("Mama");
String s2 = s;
System.out.println(s == s2);
Porównaj referencje.
Na ekranie zostanie wyświetlone true.
Obie zmienne przechowują referencje do tego samego obiektu.
4
Kot kot1 = new Kot("Oskar");
Kot kot2 = new Kot("Oskar");
System.out.println(kot1 == kot2);
Porównaj referencje.
Na ekranie wyświetli się false.
Obie zmienne odnoszą się do identycznych obiektów Kot, ale nie do tego samego obiektu.
5
String s = new String("Mama");
String s2 = new String("Mama");
System.out.println(s == s2);
Porównaj referencje.
Na ekranie wyświetli się false.
Obie zmienne odnoszą się do identycznych obiektów String, ale nie do tego samego obiektu.
6
String s = new String("Mama");
String s2 = new String("Mama");
System.out.println(s.equals(s2));
Porównaj obiekty.
Na ekranie zostanie wyświetlone true.
Obie zmienne odnoszą się do identycznych obiektów String.

– Oh, prawie zapomniałem! Mam dla Ciebie trochę ćwiczeń: