L’istruzione switch è una struttura di controllo che permette di eseguire diversi blocchi di codice in base al valore di una variabile.
È un’alternativa più pulita e leggibile rispetto a una serie di if-else if-else, specialmente quando si confrontano più valori di una stessa variabile.
La sintassi dell’switchè la seguente:
(guarda anche la sintassi semplificata a fine pagina)
switch (espressione) {
case valore1:
// Blocco di codice eseguito se espressione == valore1
break;
case valore2:
// Blocco di codice eseguito se espressione == valore2
break;
default:
// Blocco di codice eseguito se nessun valore corrisponde
}espressionedeve essere un valore intero, un carattere, una stringa o un’enumerazione (enum).- ogni
caserappresenta un possibile valore dell’espressione. breakimpedisce che il codice continui ad eseguire i casi successivi.defaultè opzionale e viene eseguito se nessuncasecorrisponde.
Ad esempio:
public class SwitchExample {
public static void main(String[] args) {
int giorno = 3;
switch (giorno) {
case 1:
System.out.println("Lunedì");
break;
case 2:
System.out.println("Martedì");
break;
case 3:
System.out.println("Mercoledì");
break;
case 4:
System.out.println("Giovedì");
break;
case 5:
System.out.println("Venerdì");
break;
case 6:
System.out.println("Sabato");
break;
case 7:
System.out.println("Domenica");
break;
default:
System.out.println("Numero non valido");
}
}
}
//Output: "Mercoledì"Possiamo raggruppare più case con lo stesso comportamento:
Ad esempio:
public class SwitchMultipleCase {
public static void main(String[] args) {
int mese = 4;
switch (mese) {
case 12: case 1: case 2:
System.out.println("Inverno");
break;
case 3: case 4: case 5:
System.out.println("Primavera");
break;
case 6: case 7: case 8:
System.out.println("Estate");
break;
case 9: case 10: case 11:
System.out.println("Autunno");
break;
default:
System.out.println("Mese non valido");
}
}
}
//Output: "Primavera"Dal Java 14, è possibile usare la nuova sintassi con frecce (->), che semplifica il codice:
public class SwitchArrowExample {
public static void main(String[] args) {
int giorno = 2;
switch (giorno) {
case 1 -> System.out.println("Lunedì");
case 2 -> System.out.println("Martedì");
case 3 -> System.out.println("Mercoledì");
default -> System.out.println("Giorno non valido");
}
}
}
//Output: "Martedì"Vantaggi:
- Più leggibile
- Niente
breaknecessario (si comporta automaticamente come se avessebreak)