Bisher hatten wir Java-Operatoren behandelt, die hauptsächlich numerische Werte verarbeitet haben. Dies ist bei logischen Operatoren nicht der Fall.
Wie der Name schon verrät, verabreiten logische Operatoren Wahrheitswerte. In Java werden sie verwendet um boolean-Werte zu verknüpfen und auszuwerten.
Es gibt in Java vier verschiedene logische Operatoren, wobei für zwei Operatoren jeweils eine Spezailvariante existiert.
Für die logischen Operatoren Und sowie Oder ist ein schnelles Auswerten möglich, dies wird als Short-Circuit-Evaluation (S-C-E) bezeichnet.
Die folgenden logischen Operatoren sind in Java definiert:
- Nicht-Operator
- Exklusiv Oder-Operator
- Und-Operator
- Oder-Operator
Hinweis: Schnelles Auswerten (Short-Circuit-Evaluation, S-C-E)
Ein Gesamtausdruck besteht aus mehreren Teilausdrücken. Zuerst wird der linke Teilausdruck ausgewertet. Steht bereits nach dem Auswerten dieses Teilausdrucks das Ergebnis des Gesamtausdrucks fest, werden die weiter rechts stehenden Teilausdrücke nicht mehr ausgewertet. Für A && B gilt: falls der A-Ausdruck bereits false liefert, wird der B-Ausdruck nicht mehr ausgewertet, da A && B zwangsläufig false ergeben wird.
Die folgende Tabelle stellt die logischen Operatoren von Java einzeln vor:
Operator | Bezeichnung | Beispiel | Beschreibung |
---|---|---|---|
! | Nicht | !a | Es wird a negiert. Ist a wahr, wird false zurückgegeben, andernfalls true. |
^ | Exklusiv Oder | a ^ b | Es wird a und b ausgewertet. Besitzt a einen anderen Wahrheitswert als b wird true zurückgegeben, andernfalls false. |
& | Und | a & b | Es wird a und b ausgewertet. Sind beide wahr, wird true zurückgegeben, andernfalls false. |
| | Oder | a | b | Es wird a und b ausgewertet. Ist mindestens einer der beiden Ausdrücke wahr, wird true zurückgegeben, andernfalls false. |
&& | Und (S-C-E) | a && b | Es wird a und b ausgewertet. Die Auswertung wird abgebrochen wenn a bereits falsch ist. Dann wird sofort false zurückgegeben. Sind beide wahr, wird true zurückgegeben, andernfalls false. |
|| | Oder (S-C-E) | a || b | Es wird a und b ausgewertet. Die Auswertung wird abgebrochen wenn a bereits wahr ist. Dann wird sofort true zurückgegeben. Ist mindestens einer der beiden Ausdrücke wahr, wird true zurückgegeben, andernfalls false. |
In dem folgenden Beispielprogramm werden die logischen Operatoren verwendet.
Zu Beginn werden die drei boolean-Variablen a, b und c deklariert und auch direkt mit Wahrheitswerten initialisiert. Weiterhin wird die boolean-Variable ergebnis deklariert.
Anschließend werden die verschiedenen logischen Operatoren auf die Variablen angewendet und jeweils das Ergebnis in der Kommandozeile ausgegeben.
Beispiel logische Operatoren in Java.
/* * Beispielanwendung logische Operatoren in Java. */ public class LogischeOperatoren{ public static void main(String[] args) { boolean a = true, b = true, c = false; boolean ergebnis; System.out.println("\na = " + a); System.out.println("b = " + b); System.out.println("c = " + c); ergebnis = !a; System.out.println("\nNicht a: !a = " + ergebnis); ergebnis = a ^ b; System.out.println("\nExklusiv Oder: a ^ b = " + ergebnis); ergebnis = a ^ c; System.out.println("Exklusiv Oder: a ^ c = " + ergebnis); ergebnis = a & b; System.out.println("\nUnd: a & b = " + ergebnis); ergebnis = a & c; System.out.println("Und: a & c = " + ergebnis); ergebnis = a | b; System.out.println("\nOder: a | b = " + ergebnis); ergebnis = a | c; System.out.println("Oder: a | c = " + ergebnis); ergebnis = (!a) | c; System.out.println("Oder: (!a) | c = " + ergebnis); ergebnis = a && b; System.out.println("\nUnd (S-C-E): a && b = " + ergebnis); ergebnis = a && c; System.out.println("Und (S-C-E): a && c = " + ergebnis); ergebnis = a || b; System.out.println("\nOder (S-C-E): a || b = " + ergebnis); ergebnis = a || c; System.out.println("Oder (S-C-E): a || c = " + ergebnis); ergebnis = (!a) || c; System.out.println("Oder (S-C-E): (!a) || c = " + ergebnis); } }
Die zugehörige Textausgabe ist in der unten abgebildeten Kommandozeilenausgabe dargestellt.
Comments 12
Ich sitze gerade im Unterricht und dieser Artikel hilft sehr! Ich verstehe Annabels Problem nicht. Aber die Kommentare haben meinen ganzen Tag verbessert. Vielen Dank! Und sorry falls hier Rechtschreibfehler sind ich habe LRS.
Danke für diesen sehr hilfrechen artikel, made my day
Ist eine super Erklärung zum Thema „logische Operatoren“. Ich als Novize auf dem Gebiet der Informatik habe sie auf Anhieb verstanden.
Menschen wie Annabel werden die Schuld, wenn etwas nicht genauso läuft, wie sie es wünschen oder sich vorstellen, immer auf jemand Anderen oder auf etwas Anderes projezieren.
Damit muss man sich nicht mit eigenen Schwächen oder Fehlern auseinander setzen!
Die Erklärung von Chris ist ausgezeichnet, einwandfrei und leicht verständlich.
Weiter so…
Author
Oder sie hat es spaßig gemeint 🙂
Richtig so Bernhard! Bravo mein Bester
Leider hilft mir dieser Beitrag nicht dabei, diese Operatoren richtig anzuwenden und zu programmieren.
Dies ist sehr schade, denn ich kann meine Aufgaben nun nicht erledigen, was meinen Lehrer sauer machen wird 🙁 Die Schuld werde ich Ihnen geben…
Abgesehen davon ist dieser Beitrag dennoch informativ und nicht so kompliziert beschrieben wie auf anderen Seiten!!!
Viel Erfolg bei ihrer weiteren Arbeit:)
Author
Hallo Annabel,
dein Lehrer sollte mal etwas entspannen. Es kann ja nicht immer alles klappen. Und danke für deine lobenden Worte.
Viele Grüße, Chris
Pingback: Operatoren, Ausdrücke und Anweisungen in Java -
Pingback: Java-Grundlagen: Besondere Operatoren in Java
Pingback: Java-Grundlagen: Zuweisungsoperatoren in Java
Pingback: Java-Grundlagen: Ausdrücke, die kleinsten ausführbaren Einheiten in Java