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 && Yauszuwerten, wird zuerstXausgewertet. WennXfalseist, dann Stop: der ganze Ausdruck istfalse. Ansonsten werteYaus 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.