„Grüße, Amigo! Ich war so begeistert von der Lösung logischer Probleme, dass ich gar nicht bemerkt habe, dass du reingekommen bist. Hier ist eines für dich: Wenn Krokodile fliegen, dann ist der Schnee weiß. Es gibt ein fliegendes Krokodil. Was ist die Schlussfolgerung?“

„Ähm... Also kommen wir zu dem Schluss, dass der Schnee weiß ist?“

„Ausgezeichnet! Sie haben den Einführungstest bestanden. Sie sind bereit, das nächste Thema zu meistern. Es heißt „Logische Operatoren“. Und wir beginnen mit der booleschen Logik. Instinktiv wissen Sie es bereits. Schließlich sind Sie ein Roboter . Wir müssen nur Ihre Einstellungen anpassen, um sie an die Java-Sprache anzupassen.“

„Boolesche Logik? Mir wurde kürzlich vom booleschen Typ erzählt …“

„Ja, hier besteht ein direkter Zusammenhang. Boolesche Ausdrücke können nur wahr oder falsch sein. Und tatsächlich dreht sich bei dieser Art von Logik alles um Ausdrücke, die wahr oder falsch sind, und Kombinationen solcher Ausdrücke. Zum Beispiel der Ausdruck 18 < 25 ist immer wahr und 7 < 5 ist immer falsch. Der Ausdruck (i < 10) hängt vom Wert von i ab. Und wenn der Ausdruck beispielsweise als wahr ausgewertet wird, können wir das Programm auffordern, etwas zu tun.“

„Ahh, ich verstehe. Boolesche Ausdrücke ermöglichen es uns nicht nur, logische Schlussfolgerungen zu ziehen, sondern auch Abzweigungen in Programmen zu erstellen.“

„Genau. Die Hauptsache ist, zu lernen, wie man sie schreibt. In Java kann man beispielsweise nicht einfach den Ausdruck schreiben 18 < age <65. Das wäre syntaktisch falsch und das Programm lässt sich nicht kompilieren.“

„Aber man kann es so schreiben:

(18 < age) AND (age < 65)

Natürlich verwenden wir das ENGLISCHE Wort nicht wirklich AND. Stattdessen benötigen Sie einen booleschen Operator . Das heißt, „AND“ wird unterschiedlich dargestellt.

„In Java gibt es drei logische Operatoren: AND(&&), OR(||), NOT(!).

Die gute Nachricht ist, dass Sie Klammern verwenden können, um logische Ausdrücke beliebiger Komplexität zu konstruieren.

Die schlechte Nachricht ist, dass Java-Entwickler beschlossen haben , anstelle der Wörter , und die Notation aus der C-Sprache zu verwenden .andornot

Schau auf den Bildschirm:

Logischer Operator Erwartung Wirklichkeit
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

„Eigentlich ist es gar nicht so schlimm... Ziemlich kompakt. Ich habe sie fast auswendig gelernt.“

„Nun, das ist wunderbar. Hier sind einige Beispiele für die Verwendung logischer Operatoren in Java:

Ausdruck Deutung Erläuterung
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) AND (a < 100)
(!a) && (!b) (not a) and (not b) (NOT a) AND (NOT b)
!(!a || !b) not((not a) or (not b)) NOT((NOT a) OR (NOT b))

Beispiele für die Verwendung von Vergleichsoperatoren und booleschen Variablen

„Denken Sie daran, Amigo, wo immer Sie einen logischen Ausdruck schreiben können, können Sie auch eine logische Variable schreiben.“

"Wie ist das?"

„Ich meine, man kann logische Ausdrücke auf unterschiedliche Weise schreiben. Zum Beispiel:

Code Erläuterung
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Wenn der Wert für das Alter zwischen 18und liegt 65, wird der Hinweis „Sie können arbeiten“ angezeigt.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Wir haben eine isYoungVariable erstellt und den ersten Teil des Ausdrucks hinein verschoben. Wir haben einfach age >= 18durch ersetzt age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Wir haben eine isOld-Variable erstellt und den zweiten Teil des Ausdrucks hinein verschoben. Außerdem age <= 65wurde durch ersetzt age > 65.

„Diese drei Beispiele sind gleichwertig. Nur im zweiten Beispiel haben wir einen Teil des Ausdrucks aus der ifAnweisung in eine separate boolesche Variable ( isYoung) verschoben. Im dritten Beispiel haben wir den zweiten Teil des Ausdrucks in eine zweite Variable ( isOld) verschoben. Der Standardwert einer booleschen Variablen ist übrigens false.

„Das werde ich mir merken. Ich hoffe.“

Logische Arithmetik

„Lassen Sie uns nun kurz die logischen Operationen durchgehen. Sie gehorchen sehr einfachen und logischen (wie könnte es anders sein!) Regeln.“

„Sehen wir uns zunächst an, wie der OROperator funktioniert. Er wird auch als ||oder- Disjunktion bezeichnet .

Ausdruck Ergebnis
true || true true
true || false true
false || true true
false || false false

a || b„Können Sie nun anhand der Tabelle ableiten, auf welches Ergebnis der Ausdruck zurückzuführen ist?“

"Ich verstehe!" Der Wert eines Ausdrucks ist, truewenn mindestens ein Term im Ausdruck ist true. Wenn beides der Fall ist false, ist das Ergebnis false.

„Das ist richtig. Da Sie so schlau sind, schauen Sie sich die Tabelle noch einmal an und stellen Sie sich vor, dass dort false0 und true1 ist. Wenn Sie es so betrachten, erinnert ||Sie das Verhalten des Operators an irgendetwas aus der gewöhnlichen Arithmetik?“

„Ähm... Nun, es ist ein bisschen wie eine Addition... Aber wenn man eine Addition durchführt, ist 1 + 1 nicht gleich 1.“

„In gewisser Weise ist es gleich, wenn wir nur mit 0 und 1 arbeiten. Aber kümmern Sie sich jetzt nicht darum. Wichtig ist, dass Sie die Ähnlichkeit zwischen der Operation und der Addition bemerkt haben. Das bedeutet, dass Sie gewonnen haben. ||“ Es überrascht nicht, dass diese Operation oft als „logische Addition“ bezeichnet wird.

"Habe es."

„Jetzt kommt der AND, auch bekannt &&als Konjunktionsoperator , auf die Bühne.

Ausdruck Ergebnis
true && true true
true && false false
false && true false
false && false false

„So wie ich es verstehe, ist das Ergebnis eines Ausdrucks truenur, wenn beide Werte, aus denen der Ausdruck besteht, sind true. Ansonsten ist es immer false.“

„Gut gemacht, Amigo! Du saugst das alles auf wie ein Schwamm. Erkennst du eine weitere Ähnlichkeit mit der Arithmetik?“

"Multiplikation!"

„Genau. Hier haben wir also eine ‚logische Multiplikation‘.“

„Als nächstes schauen wir uns den NOTOperator an, auch bekannt !als die logische Umkehrung .

Ausdruck Ergebnis
!true false
!false true

„Nun, hier ist alles ganz einfach. Der Operator wechselt truezu falseund umgekehrt.“

„Genau. Hier sind einige nützliche Ausdrücke für Sie:“

Ausdruck Ergebnis
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b