zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Ja.

Non-Short-Circuit AND-Operator

AusdruckErgebnisReihenfolge 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.

FRAGE 5:

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");