Java Reference
In-Depth Information
1. vornFrei() && !maulLeer() : false
2. !(vornFrei() && kornDa()) : true
3. vornFrei() || !vornFrei() && !maulLeer() : true
4. vornFrei() && !kornDa() && maulLeer() : false
5. !!!vornFrei() || (((maulLeer()))) : true
9.2.5 Eigenschaften
Für die korrekte Verwendung boolescher Ausdrücke ist es notwendig, die Priorität, Assoziativität
und Auswertungsreihenfolge der booleschen Operatoren zu kennen.
9.2.5.1 Priorität
Von den drei booleschen Operatoren hat der Negationsoperator ! die höchste, der Konjunktionsope-
rator && die zweithöchste und der Disjunktionsoperator || die niedrigste Priorität. Durch Klammer-
setzung (runde Klammern) kann die Priorität beeinflusst werden, d.h. in runde Klammern einge-
schlossene boolesche Ausdrücke werden immer zuerst berechnet.
Im booleschen Ausdruck !maulLeer() || vornFrei() && kornDa() wird daher zunächst der
Wert des Testbefehls maulLeer() ermittelt. Dieser wird negiert. Anschließend wird der Wert des
Testbefehls vornFrei() ermittelt. Dieser Wert wird mit demWert des Testbefehls kornDa() konju-
giert. Zum Schluss wird der zuerst ermittelte Wert mit diesem Wert disjungiert. Der boolesche Aus-
druck ist also äquivalent mit dem Ausdruck (!maulLeer()) || (vornFrei() && kornDa()) .
Im booleschen Ausdruck !(kornDa() && maulLeer()) wird aufgrund der Klammersetzung zu-
nächst die Konjunktion der Werte der booleschen Ausdrücke kornDa() und maulLeer() ermittelt
und dieser Wert dann negiert.
9.2.5.2 Assoziativität
Alle drei booleschen Operatoren sind linksassoziativ. Der Ausdruck kornDa() || vornFrei()
|| maulLeer() ist daher äquivalent zu (kornDa() || vornFrei()) || maulLeer() , d.h. es
wird zunächst der Wert von kornDa() ermittelt und disjunktiv mit dem Wert von vornFrei()
verknüpft. Dieser Wert wird anschließend mit dem Wert von maulLeer() disjungiert.
9.2.6 Auswertungsreihenfolge
Der Hamster ist ein sehr faules Lebewesen, d.h. er erspart sich unnötige Tests. Stellen Sie sich vor,
der Hamster soll den Wert des booleschen Ausdrucks vornFrei() || kornDa() ermitteln. Bisher
sind wir davon ausgegangen, dass er zunächst den Wert des Testbefehls vornFrei() und anschlie-
ßend den Wert des Testbefehls kornDa() ermittelt und diese beiden Werte disjungiert. Stellen Sie
sich nun vor, der Testbefehl vornFrei() liefert den Wert true . Gemäß der Wahrheitstabelle liefert
dann aber die Disjunktion unabhängig von dem Wert des Testbefehls kornDa() den Wert true .
Search WWH ::




Custom Search