12 < 6 && 18 > 1
ergibt false
AND-Operator && | |
---|---|
true && true | true | false && true | false | true && false | false | false && false | false |
Wir können die korrekte Antwort auf die Frage bekommen, indem wir nur den ersten Teil des Ausdrucks auswerten.
12 < 6 && 18 > 1 ------ false
Da false
&&
irgendwas immer false
ist, gibt es keinen Grund fortzufahren, nachdem der erste Teil als false
ausgewertet wurde. Das ist in der Tat das, was Java tut.
UmX && Y
auszuwerten, wird zuerstX
ausgewertet. WennX
false
ist, dann Stop: der ganze Ausdruck istfalse
. Ansonsten werteY
aus und verknüpfe dann die zwei Werte mit&&
.
Dieses Konzept wird Short-Circuit-Auswertung genannt.
Programmierer verwenden diese Eigenschaft von Java häufig. Zum Beispiel angenommen, dass zwei Methoden , die true/false
zurückgeben, in einem Boole'schen Ausdruck verknüpft sind:
if ( meineAuswertungDauertStunden() && beiMirGehtDasSchnell() ) ....
Schlagt eine bessere (aber logisch identische) Möglichkeit vor, diesen Boole'schen Ausdruck anzuordnen.