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

<<< switch >>>
Condizionale switch
La condizione è un intero

L'altro condizionale di cui dobbiamo parlare è lo switch. Si tratta di un comando che seleziona un comando da eseguire in base a un numero interno e non più, come l'if, in base a un booelano. Vediamo la sintassi:

switch (<condizione>) { 
  case <val1>: 
  case <val2>: 
    <comando> 
  break; 
  case <val>: 
    ... 
  break; 
  default: 
   ... 
  break; 
}

C'è da dire molte cose. Innanzitutto che tra le graffe bisogna racchiudere una serie di comandi. Si tratta di comandi come tutti gli altri. L'unica particolarità è che alcuni di questi comandi possono essere etichettati con un 'casè. Precisiamo meglio che intendo dire per etichettati. Esiste il comando composto "case <valore>: <comando>".

Considerando un comando come " a=1;" allora "case '2': a=1;" è un comando etichettato. Queste etichette possono essere "impilate", nel senso che posso fare "case '1': casè2': a=1;". Notare attentamente che il valore del case deve essere un valore fisso. Ovvero può essere un numero esplicito. Può anche essere una espressione, purchè possa essere calcolata una volta e per tutte. Non può contenere variabili a meno che non siano costanti: cioè può contenere per esempio MAX solo se MAX è un campo finale statico. Il motivo di questa restrizione è legato al fatto che in realtà lo switch, per ragoni di efficienza, viene internamente preparato per l'esecuzione, e non viene fatta una ricerca dei case ma una solta di "salto calcolato" in base al valore. Per poter preparare il calcolo bisogna avere tutti gli elementi e questo è il motivo principale perchè si impone che il valore dei case venga definito una volta e per tutte, e non dipenda da variabili calcolate durante l'esecuzione.

valutata la <condizione> si salta al primo case corripondente

Una volta che abbiamo costruito il nosto switch correttamente è il momento di farlo funzionare. L'espressione che si trova tra parentesi nella testa dello switch deve essere intera. Attenzione, non può essere un double e, curiosamente, non può essere nemmeno un long. Una volta calcolato il valore dell'espressione, si va alla ricerca di un case che ha un valore corrispondente. L'esecuzione salta quindi a questa etichetta e continua da lì, eseguendo i comandi successivi.

Se nessuno dei case è soddisfatto si salta al default

Nel caso in cui il valore calcolato nell'espressione non corrisponda a nessun caso reale, ovvero non ci siano etichette con un valore corrispondente, si salta, se c'è, all'etichetta speciale default, che non prende valori.

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