Operatore Condizionale in Java

Concetti Chiave
  • L'operatore condizionale ternario ? in Java consente di semplificare le istruzioni condizionali, restituendo un valore basato su una condizione booleana.
  • Il risultato dell'operatore ternario è il valore dell'espressione valutata, e le due espressioni devono restituire lo stesso tipo o un tipo compatibile.

L'operatore condizionale ternario

Java include un operatore speciale ternario (a tre vie) che può sostituire alcuni tipi di istruzioni if-then-else. Questo operatore è ?. All'inizio può sembrare poco intuitivo, ma, una volta padroneggiato, ? può essere utilizzato con grande efficacia. L'operatore ? ha la seguente forma generale:

espressione1 ? espressione2 : espressione3

Qui, espressione1 può essere qualunque espressione che restituisca un valore booleano.

Se espressione1 è true, viene valutata espressione2; altrimenti viene valutata espressione3.

Il risultato dell'operazione ? è il valore dell'espressione valutata. espressione2 ed espressione3 devono restituire lo stesso tipo (o un tipo compatibile), che non può essere void.

Ecco un esempio d'impiego dell'operatore ?:

rapporto = denominatore == 0 ? 0 : numeratore / denominatore;

Quando Java valuta quest'espressione di assegnazione, prende innanzitutto in considerazione l'espressione posta a sinistra del punto interrogativo.

Se denominatore è uguale a zero, viene valutata l'espressione compresa tra il punto interrogativo e i due punti, e il suo valore diventa quello dell'intera espressione ?.

Se denominatore è diverso da zero, viene valutata l'espressione dopo i due punti, il cui valore diventa quello dell'intera espressione ?. Il risultato prodotto dall'operatore ? viene quindi assegnato a rapporto.

Di seguito un programma che dimostra l'operatore ?, usandolo per ottenere il valore assoluto di una variabile:

// Dimostrazione di ?.
class Ternario {
    public static void main(String[] argomenti) {
        int valore, assoluto;

        valore = 10;
        assoluto = valore < 0 ? -valore : valore; // ottiene il valore assoluto di valore
        System.out.print("Valore assoluto di ");
        System.out.println(valore + " è " + assoluto);

        valore = -10;
        assoluto = valore < 0 ? -valore : valore; // ottiene il valore assoluto di valore
        System.out.print("Valore assoluto di ");
        System.out.println(valore + " è " + assoluto);
    }
}

L'output generato dal programma è il seguente:

Valore assoluto di 10 è 10
Valore assoluto di -10 è 10