CodeGym /Kursy Java /Składnia Java /Porównywanie i ustalanie warunków

Porównywanie i ustalanie warunków

Składnia Java
Poziom 4 , Lekcja 6
Dostępny

– 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ń:

Komentarze (19)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Anonymous #11598459 Poziom 6, Zurich, Switzerland
29 listopada 2024
zadanie "Target niedostepny!" - co z przypadkiem, gdy jedna z liczb albo dwie to 0 ?
Anonymous #11566258 Poziom 7, Warsaw, Poland
24 września 2024
Jola czy Jola? Znowu to samo - dostajemy zadanie gdzie należy użyć metody "length()", której wcześniej nigdzie nie opisano... Słabo...
Teh Kec Poziom 5, United Kingdom, United Kingdom
17 grudnia 2023
musisz użyć : if (a.equals(b)) i wtedy wynik bedzie TRUE
Anonymous #11231933 Poziom 10, Sosnowiec, Poland
6 stycznia 2023
Niezależnie od tego czy oba imiona są różne (John Michael) czy też identyczne (Michael Michael) formuła if(a==b) daje w wyniku FALSE. W programie Intellij IDEA ta sama formuła daje prawidłowy wynik TRUE dla imion identycznych (np. Michael Michael). Coś jest tu namieszane.
Anonymous #11274698 Poziom 8, Gorzow Wielkopolski, Poland
14 marca 2023
Możesz mi pokazać oba kody? Może jakoś pomogę
Maciek Kordalski Poziom 5, Buchbach, Germany
22 marca 2023
typ String jest obiektem, dlatego jego wartość trzeba porównać operatorem equals
Tomasz Poziom 7, Wrocław, Poland
8 czerwca 2020
Witam, mam pytanie a propo porównywania. Gdy prawdzam ten przykład w NetBeans to wychodzi false.. dlaczego?

Kot kot1 = new Kot("Oskar");
Kot kot2 = new Kot("Oskar");
System.out.println(kot1.equals(kot2));
hidden #10661518 Poziom 14
10 września 2020
bo porównujesz referencje (adresy w pamięci) obiektów. Aby metoda equals działała musisz ją nadpisać. W niej określasz(w tej nadpisywanej) na na podstawie jakich pól ma porównywać
WIDMO Poziom 25, Gdańsk, Poland Expert
8 kwietnia 2020
W "3 liczby" w "Requirements" powinna być zdefiniowana sytuacja gdy 3 liczby są takie same ;)
piotrmaceluch Poziom 9, Wroclaw, Poland
27 lipca 2022
Nie, ponieważ jest zdefiniowane założenie, iż jedna z liczb się rózni.
Jakub Bryjan Poziom 4, Lodz, Poland
4 marca 2020
Uważam, że trochę wcześniej powinna być ta lekcja :) Bo już we wcześniejszych zadaniach używało się tych operatorów logicznych.
Anna Poziom 5, Krakow, Poland
18 grudnia 2019
Czy ktoś zrobił sortowanie 3 liczb?
Msaters Poziom 20, Legnica, Poland
22 grudnia 2019
tak
Krzysztof Poziom 7, Ełk, Poland
30 grudnia 2019
Tak
Damian Siadaczka Poziom 20, Warszawa, Poland
15 stycznia 2020
musisz stworzyć dodatkową zmienną, która tymczasowo będzie przechowywać wartość jednej z liczb co ułatwi zmiennym wymienić się wartościami
Jakub Kurlak Poziom 41, Warszawa, Polska
16 stycznia 2020
Można i tak, ale na piechotę też nie jest ciężko :)
Filip Hałas Poziom 8, Bydgoszcz, Poland
22 stycznia 2020
zrob tablice liczb i uzyj sortowania a nastepnie wywolaj liczby w petli odwracajac kolejnosc :)
Michał Łanowy Poziom 9, Warsaw, Poland
13 lutego 2020
hej, ja tak zrobiłem. program zwraca wynik tak jak powinien, jednak nie przechodzi testu. Nie jest spełnione ostatnie wymaganie. o co może chodzić?
MarcinJava Poziom 8, Switzerland
2 listopada 2022
Moze nie dales opcji rownosci liczb? hm ja to zobilem ta instrukcja trojargumentowa i tez lalka :)