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.