  |
? : operatore condizionale, ternario (l'unico) |
un altro operatore interessante, ha anche la caratteristica di essere speciale in termini sintattici: si tratta infatti di un operatore "ternario". Questo operatore prende tre operandi. Per capire come funziona, consideriamo un operatore binario che viene scritto come "a + b". L'operatore ternario in questione viene scritto come "a ? b : c", dove il punto interrogativo e i due punti vanno sempre di pari passo, e vanno scritti entrambi in quest'ordine.
  |
il primo valore deve essere un valore booleano |
  |
gli altri due possono essere quasiasi tipo |
  |
devono essere dello stesso tipo (o convertibili allo stesso tipo) |
Questo operatore è chiamato operatore condizionale in quanto ritorna un valore oppure un altro valore a seconda di una condizione. Il primo operando è la condizione, di conseguenza deve essere una espressione che viene valutata ad un valore booleano. Il secondo e il terzo operando invece sono il risultato finale: se primo operando viene valutato a vero, si ottiene come risultato il secondo operando. Se il primo operando viene valutato falso, si ottiene come risultato terzo operando. È importante rendersi conto che il secondo e il terzo operando devono essere dello stesso tipo, o almeno convertibili allo stesso tipo. In particolare, una cosa che non posso assolutamente fare è ritornare un tipo primitivo come secondo operando, e un oggetto come terzo operando.
  |
comportamento short - circuit: |
(a > b) ? f() : g()
  |
se a >b chiamo f() altrimenti chiamo
g() |
Anche questo operando ha un comportamento a corto circuito. Viene valutata la condizione: se la prima condizione è vera, allora viene valutata il secondo operando. Se la prima condizione è falsa, viene valutato il terzo operando. Nel listato è mostrato che se a è minore di b, allora chiamo f(), altrimenti chiamo g(). Solamente una delle due di f() o g() viene però effettivamente chiamata.
double sqrtmax(double a, double b) {
return a > b
? Math.sqrt(a)
: Math.sqrt(b);
}
  |
calcola la radice una volta sola |
consideriamo questo esempio, che ritorna la radice quadrata del massimo tra a e b. In questo caso la radice viene calcolata una volta sola. In ogni caso si ha un risparmio di tempo di esecuzione.
|