1. Logischer Datentyp: boolean
Wie wir bereits gesehen haben, gibt es in Java einen sehr nützlichen Operator – if-else. Er führt einen Block von Anweisungen aus, wenn die Bedingung in den Klammern wahr ist, und einen zweiten Block, wenn die Bedingung falsch ist.
Um bequem mit Ausdrücken zu arbeiten, die wahr oder falsch sein können, hat Java einen speziellen Typ – boolean. Sein wichtigstes Merkmal besteht darin, dass Variablen dieses Typs nur zwei Werte annehmen können: true (wahr) und false (falsch).
Andere Werte können Variablen des Typs boolean nicht zugewiesen werden. Der Compiler lässt das nicht zu.
Beispiele für Variablen des Typs boolean:
boolean isAdult = true;
boolean hasMoney = false;
Eine Variable vom Typ boolean hat genau zwei Werte – true und false. Das war’s! Fast wie bei einem Test – entweder „bestanden“ oder „durchgefallen“.
2. Vergleichsoperatoren
Wozu ist so ein primitiver Typ gut? Die wahre Stärke von boolean zeigt sich, wenn wir logische Ausdrücke aufbauen. Üblicherweise entstehen sie mit Hilfe von Vergleichsoperatoren.
| Operator | Bedeutung | Beispiel | Wert |
|---|---|---|---|
| == | Gleich | |
true oder false |
| != | Ungleich | |
true oder false |
| > | Größer | |
true oder false |
| < | Kleiner | |
true oder false |
| >= | Größer oder gleich | |
true oder false |
| <= | Kleiner oder gleich | |
true oder false |
Beispiel:
int age = 20;
boolean isAdult = age >= 18; // true (20 ist größer oder gleich 18)
boolean isTeenager = age >= 13 && age < 18; // false (20 ist nicht kleiner als 18)
boolean isEven = age % 2 == 0; // true (20 ist ohne Rest durch 2 teilbar)
isAdult wird hier true, denn 20 ist tatsächlich ein „erwachsenes“ Alter.
Wichtiger Punkt 1:
Operatoren, die aus zwei Zeichen bestehen, dürfen nicht getrennt werden.
a < = 10
speed > = max
age = = 18
time ! = 0
Wichtiger Punkt 2:
Beachte, dass es die Operatoren => und =< nicht gibt: Es gibt nur <= und >=. Wenn du a =< 3 schreibst, lässt sich dein Code einfach nicht kompilieren.
Wichtiger Punkt 3:
ANDn Java kannst du keinen Ausdruck der Form 18 < age < 65 schreiben. Denn der Ausdruck 18 < age ergibt den Wert true oder false. Und true mit einer Zahl (65) zu vergleichen geht nicht – unterschiedliche Typen.
3. Logische Operationen
ANDn Java kann man den Ausdruck 18 < age < 65 nicht schreiben – er ist syntaktisch ungültig und das Programm lässt sich nicht kompilieren.
Man kann es aber so schreiben:
(18 < age) AND (age < 65)
Natürlich verwendet man statt des Wortes UND logische Operatoren. ANDn Java gibt es drei logische Operatoren: AND (und), OR (oder) und NOT (nicht).
Gute Nachricht: Mit Klammern kann man logische Ausdrücke beliebiger Komplexität bauen.
Schlechte Nachricht: ANDn Java werden statt der Wörter and, or und not die aus der C-Welt stammenden Symbole verwendet: &&, ||, !.
| Logischer Operator | Erwartung | Realität |
|---|---|---|
| UND (∧) | and | && |
| ODER (∨) | or | || |
| NANDCHT (¬) | not | ! |
Hier sind einige Beispiele für die Verwendung logischer Operatoren in Java:
| Ausdruck | ANDn Worten | Erläuterung |
|---|---|---|
|
(0 < a) and (a < 100) | (0 < a) UND (a < 100) |
|
(not a) and (not b) | (NANDCHT a) UND (NANDCHT b) |
|
not((not a) or (not b)) | NANDCHT((NANDCHT a) ODER (NANDCHT b)) |
4. Wahrheitstabellen
Kurz zu den logischen Operationen.
Operator AND
Der Operator AND, auch UND, auch &&, auch Konjunktion, auch logische Multiplikation.
| Ausdruck | Ergebnis |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
Operator OR
Der Operator OR, auch ODER, auch ||, auch Disjunktion, auch logische Addition.
| Ausdruck | Ergebnis |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Operator NOT
Der Operator NOT, auch NANDCHT, auch !, auch ANDnversion.
| Ausdruck | Ergebnis |
|---|---|
| ! true | false |
| ! false | true |
Nützliche Ausdrücke:
| Ausdruck | Ergebnis |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. Beispiele für logische Operationen: and, or, not
Operation „UND“, AND, wird mit && bezeichnet
Das Ergebnis ist nur dann wahr, wenn beide Operanden wahr sind.
int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16 ist größer als 14 UND ein Ticket vorhanden ist)
Wenn du mindestens 14 bist UND ein Ticket hast – bitte eintreten!
Operation „ODER“, OR, wird mit (||) bezeichnet
Das Ergebnis ist wahr, wenn mindestens eine Bedingung wahr ist.
boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (bearbeiten erlaubt, wenn mindestens eine Bedingung true ist)
Wenn du Admin ODER Moderator bist – bitte, drück die Buttons!
Operation „NANDCHT“, NOT, wird mit (!) bezeichnet
Der ANDnverter macht aus wahr falsch und umgekehrt.
boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (wenn kein Wochenende ist, arbeiten wir)
Wenn NANDCHT Wochenende ist – Zeit aufzustehen!
Kombinieren: Baue Bedingungen beliebiger Komplexität
Du kannst so viele logische Operationen kombinieren, wie du willst (am besten nicht übertreiben). Klammern kann (und sollte man!) zur Klarheit verwenden.
Beispiel:
int age = 17;
boolean hasTicket = false;
boolean isVip = true;
boolean canGo = (age >= 18 && hasTicket) || isVip; // true, weil isVip = true ist
Logik: Wenn die Person volljährig ist und ein Ticket hat, oder wenn sie VANDP ist – lassen wir sie hinein. Wenn nicht VANDP – nur wenn sie erwachsen ist und ein Ticket hat.
GO TO FULL VERSION