CodeGym /Kursy /JAVA 25 SELF /Typ logiczny boolean i operacje logiczne

Typ logiczny boolean i operacje logiczne

JAVA 25 SELF
Poziom 3 , Lekcja 3
Dostępny

1. Typ logiczny: boolean

Jak już widzieliśmy, w Javie jest bardzo przydatny operator — if-else. Wykonuje on jeden blok instrukcji, jeśli warunek w nawiasach jest prawdziwy, i drugi blok instrukcji, jeśli warunek jest fałszywy.

Aby wygodnie pracować z wyrażeniami, które mogą być prawdziwe lub fałszywe, do języka Java dodano specjalny typ — boolean. Jego główna cecha polega na tym, że zmienne tego typu mogą przyjmować tylko dwie wartości: true (prawda) i false (fałsz).

Nie można przypisać żadnych innych wartości zmiennym typu boolean. Kompilator na to nie pozwoli.

Przykłady zmiennych typu boolean:

boolean isAdult = true;
boolean hasMoney = false;
Przykład deklaracji zmiennych typu boolean

Zmienna typu boolean ma tylko dwie wartości — true i false. I to wszystko! Prawie jak przy teście — albo „zaliczony”, albo „niezaliczony”.

2. Operacje porównania

Po co więc taki prymitywny typ? Prawdziwa moc boolean ujawnia się, gdy budujemy wyrażenia logiczne. Zazwyczaj powstają one za pomocą operatorów porównania.

Operator Znaczenie Przykład Wartość
== Równe
a == b
true lub false
!= Nierówne
a != b
true lub false
> Większe
a > b
true lub false
< Mniejsze
a < b
true lub false
>= Większe lub równe
a >= b
true lub false
<= Mniejsze lub równe
a <= b
true lub false

Przykład:

int age = 20;
boolean isAdult = age >= 18;   // true (20 jest większe lub równe 18)
boolean isTeenager = age >= 13 && age < 18; // false (20 nie jest mniejsze niż 18)
boolean isEven = age % 2 == 0; // true (20 dzieli się przez 2 bez reszty)

isAdult będzie tutaj równe true, ponieważ 20 to rzeczywiście „dorosły” wiek.

Ważna uwaga 1:

Operatorów składających się z dwóch znaków nie wolno rozdzielać.


a < = 10
speed > = max
age = = 18
time ! = 0
Tak nie wolno pisać! Operatory muszą być zapisane łącznie: <=, >=, ==, !=

Ważna uwaga 2:

Zwróć uwagę, że operatorów => i =< nie ma: są tylko <= i >=. Jeśli napiszesz a =< 3, kod po prostu się nie skompiluje.

Ważna uwaga 3:

W Javie nie można zapisać wyrażenia w rodzaju 18 < age < 65. Wyrażenie 18 < age przyjmie wartość true lub false. A porównywać true z liczbą (65) nie wolno — to różne typy.

3. Operacje logiczne

W języku Java nie da się zapisać wyrażenia 18 < age < 65 — jest ono składniowo niepoprawne i program się nie skompiluje.

Za to można zapisać je tak:


(18 < age) I (age < 65)
Wyrażenie logiczne z dwoma warunkami (po polsku)

Oczywiście zamiast słowa I używa się operatorów logicznych. W Javie są trzy operatory logiczne: AND (i), OR (lub) i NOT (nie).

Dobra wiadomość: korzystając z nawiasów, można tworzyć wyrażenia logiczne o dowolnej złożoności.
Zła wiadomość: w Javie zamiast słów and, or i not używa się symboli z rodziny C: &&, ||, !.

Operator logiczny Oczekiwania Rzeczywistość
I (∧) and &&
LUB (∨) or ||
NIE (¬) not !

Oto kilka przykładów użycia operatorów logicznych w Javie:

Wyrażenie Czytamy jako Wyjaśnienie
(0 < a) && (a < 100)
(0 < a) and (a < 100) (0 < a) I (a < 100)
(!a) && (!b)
(not a) and (not b) (NIE a) I (NIE b)
!(!a || !b)
not((not a) or (not b)) NIE((NIE a) LUB (NIE b))

4. Tabele prawdy

Krótko przejdźmy przez operacje logiczne.

Operator AND

Operator AND, znany też jako I, czyli &&, to koniunkcja, inaczej iloczyn logiczny.

Wyrażenie Wynik
true && true true
true && false false
false && true false
false && false false

Operator OR

Operator OR, znany też jako LUB, czyli ||, to alternatywa (dysjunkcja), inaczej suma logiczna.

Wyrażenie Wynik
true || true true
true || false true
false || true true
false || false false

Operator NOT

Operator NOT, znany też jako NIE, czyli !, to negacja.

Wyrażenie Wynik
! true false
! false true

Przydatne wyrażenia:

Wyrażenie Wynik
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b

5. Przykłady operacji logicznych: and, or, not

Operacja „I”, AND, oznaczana jako &&

Wynik to prawda tylko wtedy, gdy oba warunki są prawdziwe.

int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16 > 14 I jest bilet)

Jeśli masz 14 lat I masz bilet — wchodzisz!

Operacja „LUB”, OR, oznaczana (||)

Wynik jest prawdziwy, jeśli przynajmniej jeden warunek jest prawdziwy.

boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (można edytować, jeśli choć jeden z nich jest true)

Jeśli jesteś administratorem LUB moderatorem — śmiało, klikaj przyciski!

Operacja „NIE”, NOT, oznaczana (!)

Negacja zamienia prawdę w fałsz i odwrotnie.

boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (jeśli nie jest weekend, pracujemy)

Jeśli NIE jest weekend — czas wstawać!

Kombinowanie: buduj warunki o dowolnej złożoności

Można łączyć dowolną liczbę operacji logicznych (lepiej jednak nie przesadzać). Nawiasów można (a nawet trzeba!) używać dla czytelności.

Przykład:

int age = 17;
boolean hasTicket = false;
boolean isVip = true;

boolean canGo = (age >= 18 && hasTicket) || isVip; // true, ponieważ isVip = true

Logika: jeśli ktoś jest pełnoletni i ma bilet, albo jeśli jest VIP — wpuszczamy. Jeśli nie jest VIP — tylko gdy jest dorosły i ma bilet.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION