Der ternäre Operator kann eine if-else-Verzweigung ersetzen und weist meist einer Variablen einen Wert in Abhängigkeit vom Ergebnis einer Bedingungsprüfung zu.
Er ist der einzige Operator, der mit drei Operanden arbeitet, wird oft auch Bedingungsoperator genannt und besitzt folgenden allgemeinen Aufbau:
bedingung ? wert1 : wert2
Die Variablenzuweisung erfolgt dann in der Form
variable = bedingung ? wert1 : wert2
bedingung
muss immer ein boolscher Ausdruck sein. Er
entscheidet über die Wertzuweisung. Ist er true
,
so wird der Wert nach dem Fragezeichen zugewiesen, ansonsten der
Wert nach dem Doppelpunkt.
int k = i == 10 ? 12 : 5;
Ist i
mit 10 initialisiert, so wird k
der
Wert 12 zugewiesen, im anderen Fall der Wert 5.
wert1
und wert2
müssen Werte repräsentieren, sodass
folgendes nicht geht, da die Methode print()
keinen Rückgabewert besitzt:
i == 10 ? System.out.print(12) : System.out.print(5); // falsch
Richtig ist hingegen:
System.out.print(i == 10 ? 12 : 5);
Im Falle, dass die Variable i mit 10 belegt ist, wird 12 ausgegeben,
ansonsten 5.
Hier zeigt sich auch die Stärke des
Bedingungsoperators: Er kann Anweisungen sehr kurz fassen,
allerdings - wie in solchen Fällen häufig - auf Kosten der
Lesbarkeit, besonders wenn die Anweisungen komplexer werden.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.