Ja.
Ausdruck | Ergebnis | Reihenfolge der Auswertung |
---|---|---|
true && true | true | Auswertung beider Operanden |
false && true | false | Nur Auswertung des 1. Operanden |
true && false | false | Auswertung beider Operanden |
false && false | false | Nur Auswertung des 1. Operanden |
true & true | true | Auswertung beider Operanden |
false & true | false | Auswertung beider Operanden |
true & false | false | Auswertung beider Operanden |
false & false | false | Auswertung beider Operanden |
Der &-Operator verknüpft zwei Boole'sche Werte, indem er die AND-Regeln verwendet, aber dabei immer beide Operanden auswertet. Das ist sinnvoll, wenn wir wollen, dass beide Operanden ausgewertet werden, egal welche Werte sie zurückgeben.
Der Nachteil ist ein eventueller Geschwindigkeitsverlust. Die meisten Java Programme verwenden den &&
-Operator, wenn eine AND-Verknüpfung gebraucht wird. Der Programmierer muss dennoch auf Seiteneffekte aufpassen.
Üblicherweise wird das dadurch erreicht, das Methoden geschrieben werden, die möglichst "reine Funktionen" sind. Eine reine Funktion ist eine Methode, die einen Wert zurückgibt, und frei von Seiteneffekten ist. Methoden, die keine reinen Funktionen sind, sollten nicht in Boole'schen Ausdrücken verwendet werden.
Zum Beispiel ist die letzte Version der Version der Methode berechneMaximum()
des vorhergehenden Beispiels eine reine Funktion. Sie berechnet das Maximum, aber speichert selbst das Ergebnis nicht.
Was gibt das Folgende aus?
int zaehler = 0; // angenommen, dass diese Werte das Ergebnis int gesamt = 345; // von Input-Daten während des Programmlaufs sind if ( zaehler > 0 && gesamt / zaehler > 80 ) System.out.println("Akzeptabler Durchschnitt"); else System.out.println("Schlechter Durchschnitt");