Der Datentyp boolean
Dieser Datentyp hat nur zwei Werte, nämlich true und false. Es handelt sich also um einen sogenannten Wahrheitswert. Eine Variable oder ein Parameter dieses Datentyps kann also nur den logischen Wert true (wahr) oder false (falsch) haben. Das Gleiche gilt für sondierende Methoden, die einen Rückgabewert vom Typ boolean haben:
public boolean istEnthalten(String name)
Diese Getter-Methode liefert den Wert true zurück, wenn der übergebene Name in der angesprochenen Liste, dem Array, dem Baum etc. enthalten ist. Ist der Name nicht enthalten, wird false zurückgeliefert.
Ausdrücke, die einen boolean-Wert zurückliefern
Betrachten wir die logische Bedingung in einer if-Anweisung, zum Beispiel if (x > 10).
Die Bedingung x > 10 liefert einen boolean-Wert, nämlich true, falls x größer ist als 10, und false, wenn x nicht größer ist als 10.
Die hier gezeigte Bedingung ist noch recht einfach. Es können aber auch mehrere solche Bedingungen mit binären Operatoren verknüpft werden.
Binäre Operatoren für logische Ausdrücke
In der folgenden Tabelle sind A und B logische Bedingungen wie beispielsweise x == 10 oder y < z.
Operator | Bedeutung | Erläuterung oder Beispiel |
== | Gleichheit | x == 10 → true, falls x den Wert 10 hat. |
!= | Ungleichheit | x != 10 → false, falls x = 10 und true, falls x = 8. |
&& | logisches UND | A && B → true, falls A = true und B = true A && B → false, falls A = true und B = false A && B → false, falls A = false und B = true A && B → false, falls A = |
|| | logisches ODER | A || B → true, falls A = true und B = true A || B → true, falls A = true und B = false A || B → true, falls A = false und B = true A || B → false, falls A = false und B = false |
In Java hört die Auswertung eines solchen verknüpften Ausdrucks bereits dann auf, wenn das Ergebnis feststeht. Beispielsweise wird die Überprüfung eines Ausdrucks wie A && B schon dann abgebrochen, wenn A den Wert false hat. Dann ist klar, dass der gesamte Ausdruck ebenfalls false sein muss. Bei einem Ausdruck wie A || B wird die Auswertung schon abgebrochen, wenn A true ist, denn dann ist klar, dass der gesamte Ausdruck true ist.
Vollständige und verkürzte Auswertung von Ausdrücken
Die Java-Operatoren && und || führen zu einer verkürzten Auswertung von logischen Ausdrücken, wie eben gerade an zwei Beispielen erläutert. Man kann in logischen Ausdrücken aber auch die Operatoren & und | einsetzen (also nur jeweils ein &- bzw. |- Symbol). Diese Operatoren führen zu einer vollständigen (nicht-verkürzten) Auswertung. Balzert hat in seinem Buch hier ein schönes Beispiel veröffentlicht, das wir uns jetzt einmal ansehen wollen:
boolean ungleich = false; boolean wert; wert = (7 == 10) & (ungleich = 8 != 9);
Der Ausdruck A (7 == 10) hat den Wert false. Bei einer vollständigen Auswertung (mit &&) würde die Analyse an dieser Stelle abbrechen. Die boolean-Variable ungleich würde dann den Wert false behalten.
Durch die Verwendung von & wird aber eine vollständige Auswertung eingeleitet. Der Ausdruck B besteht - wenn man genau hinsieht - aus einer logischen Zuweisung. Zunächst wird der logische Ausdruck 8 != 9 ausgewertet, und das Ergebnis true wird dann der Variablen ungleich zugewiesen. Am Ende der Auswertung hat die Variable ungleich jetzt also den Wert true.
Methoden, die einen boolean-Wert zurückliefern
Betrachten wir die folgende Methode:
public boolean istGerade(int zahl) { if (zahl % 2 == true) return true; else return false; }
Diese Methode überprüft, ob der Parameter zahl eine gerade Zahl ist. Hat zahl beispielsweise den Wert 7, wird false zurückgeliefert, wenn zahl den Wert 8 hat, ist das Ergebnis true.
Diese Methode ist allerdings unnötig lang. Es geht auch viel einfacher und kürzer:
public boolean istGerade(int zahl) { return (zahl % 2 == true) }
Der Ausdruck zahl % 2 hat entweder den Wert true oder den Wert false. Dieser Wert kann direkt mit dem return-Befehl an den Aufrufer dieser Methode zurückgegeben werden.
- Balzert: Java: Der Einstieg in die Programmierung, 5. Auflage 2022