1. L'operatore a scelta multipla:switch
Java ha un altro operatore interessante che ha ereditato dal suo nonno (C++). Stiamo parlando della switch
dichiarazione. Potremmo anche chiamarlo operatore a scelta multipla. Sembra un po' ingombrante:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Un'espressione o una variabile è indicata tra parentesi. Se il valore dell'espressione è value1
, la macchina Java avvia l'esecuzione code1
. Se l'espressione è uguale a value2
, l'esecuzione passa a code2
. Se l'espressione è uguale a value3
, code3
viene eseguita.
Esempio:
Codice | Uscita console |
---|---|
|
|
2. break
dichiarazione inswitch
Una caratteristica importante di un'istruzione switch
è che il programma salta semplicemente alla riga richiesta (al blocco di codice richiesto) e quindi esegue tutti i blocchi di codice fino alla fine del file switch
. Non solo il blocco di codice corrispondente al valore in switch
, ma tutti i blocchi di codice fino alla fine di switch
.
Esempio:
Codice | Uscita console |
---|---|
|
|
Data una temperatura di 36, il programma inserirà l' switch
istruzione, salterà ed eseguirà il primo blocco di codice (il primo caso), quindi eseguirà allegramente il resto dei blocchi di codice.
Se si desidera eseguire solo un blocco di codice , il blocco di codice associato al caso corrispondente, è necessario terminare il blocco con un'istruzione break
;
Esempio:
Codice | Uscita console |
---|---|
|
|
Puoi omettere break
nell'ultimo caso dell'istruzione switch
, poiché quel blocco è l'ultimo con o senza un'istruzione break.
3. Azione predefinita:default
Un altro punto importante. Cosa succede se nessuno dei casi elencati nella switch
corrispondenza corrisponde all'espressione tra parentesi?
Se non viene trovato un caso corrispondente, il resto dell'istruzione switch
viene ignorato e il programma continuerà l'esecuzione dopo la parentesi graffa che termina l' switch
istruzione.
Detto questo, puoi anche fare in modo che switch
un'istruzione si comporti come il ramo else in un'istruzione if-else
. Per fare questo, usa la default
parola chiave.
Se nessuno degli case
s nel switch
blocco corrisponde al valore dell'espressione e switch
ha un default
blocco, verrà eseguito il blocco predefinito. Esempio:
Codice | Uscita console |
---|---|
|
|
4. Confronto switch
eif-else
L' switch
affermazione è in qualche modo simile a if-else
un'affermazione, solo più complicata.
Puoi sempre riscrivere il codice di switch
un'istruzione come if
istruzioni multiple. Esempio:
Codice con interruttore | Codice con if-else |
---|---|
|
|
Il codice a sinistra funzionerà esattamente come il codice a destra.
Una catena di più if-else
istruzioni è preferibile quando un'istruzione if
contiene varie espressioni complesse in ciascun caso separato.
5. Quali espressioni possono essere utilizzate in una switch
dichiarazione?
Non tutti i tipi possono essere utilizzati come case
etichette in switch
un'istruzione. È possibile utilizzare letterali dei seguenti tipi:
- tipi interi:
byte
,short
,int
,long
char
String
- qualsiasi
enum
tipo
Non è possibile utilizzare altri tipi come etichette caso.
Esempio di utilizzo di un'istruzione enum
all'interno di switch
un'istruzione:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
Nota: se utilizzi un'istruzione enum
all'interno di switch
un'istruzione, non è necessario scrivere il nome della classe davanti a ciascun valore nelle case
etichette. È sufficiente scrivere solo il valore.
GO TO FULL VERSION