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;
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 | |
true lub false |
| != | Nierówne | |
true lub false |
| > | Większe | |
true lub false |
| < | Mniejsze | |
true lub false |
| >= | Większe lub równe | |
true lub false |
| <= | Mniejsze lub równe | |
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
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)
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) and (a < 100) | (0 < a) I (a < 100) |
|
(not a) and (not b) | (NIE a) I (NIE 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.
GO TO FULL VERSION