ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Basi | Espressioni | Comandi | Classi | Ereditarieta | Eccezioni | Thread | Utilita | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

Comandi
Comandi
if
switch
fall-through
while
do-while
for
interruzioni
label
return
eccezioni
Stringhe/Array
Array
Caratteristiche
Creazione
Stringhe

<<< fall-through >>>
Attenzione: eseguito il salto, il flussoprosegue
Non si esce dallo switch al case successivo.

Abbiamo detto una cosa che va ribadita meglio: l'esecuzione una volta che si raggiunge un comando etichettato, prosegue. Chi magari viene da altri linguaggi può essere porato a pensare che se nel corso dell'esecuzione si incontra un altro case, si vada alla fine dello switch. Così non è. Invece, si esegue pure il comando legato al case.

Utile per impilare più case.

La ragione di questo strano comportamento è per consentire di "impilare" più case. Quindi posso scrivere "case '1': case '2': case '3': a=b;' per assegnare b ad a ogni volta che calcolo 1, 2 o 3.

Se si incontra un break si va alla fine dello switch

Comunque se voglio terminare un case, posso farlo, ma lo devo fare esplicitamente, ponendo un comando break. Questo comando effettivamente mi fa saltare alla fine dello switch. Su richiesta del programmatore.

Esempio di switch
n=0; 
switch (c) { 
 case 1: 
 case 2: 
    n += 1; 
 case 3: 
       n += 2; 
 break; 
 default: 
       n += 4; 
 break; 
}

Vediamo un esempio concreto in cui possiamo fare mente locale e concentrarci su quello che effettivamente succede.

Se all'inizio c vale 1 o 2, n alla fine vale 3

Se c vale 1 o 2 si salta a n+=1, ma a qusto punto, non essendoci niente, si prosegue eseguendo n+=2. A questo punto si incontra effettivamente un break e si termina, ottenendo 0+1+2=3.

Se all'inizio c vale 3 , n alla fine vale 2

Nel caso in cui invece abbiamo un valore 3, si salta direttamente a n+=2 e poi alla fine del ciclo, immediatamente. Risultato: 2.

Se all'inizio c vale 4, n alla fine vale 4

Un valore diverso dai precedenti fa andare al default, che somma 4 a 0, ottentendo 4 come risultato.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com