|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2014
Messaggi: 6
|
If e switch Java
Salve a tutti,
vorrei porvi delle domande che riguardano il linguaggio Java, e più precisamente if (else) e switch: - Quale dei due è più veloce? - In che condizioni è meglio usare uno invece dell'altro? Ad esempio: Codice:
if (a == 1)
{
// istruzioni
}
else // Che poi non so se è meglio creare if nidificati o in cascata in questo caso... secondo voi?
{
if (a == 2)
{
// istruzioni
}
}
// oppure
switch (a)
{
case 1:
// istruzioni
break;
case 2:
// istruzioni
break;
}
So anche che esiste in Java la possibilità di fare cose del genere (io vengo dal Pascal quindi capitemi se questa cosa che per me è eccezionale in realtà non lo è): Codice:
boolean c1 = true;
boolean c2 = true;
boolean c3 = false;
if(c1) {
// il blocco viene eseguito
} else if(c2) {
// il blocco non viene eseguito anche se 'c2' è 'true'
}
if(c3) {
// il blocco non viene eseguito perché 'c3' è 'false'
} else if(c2) {
// il blocco viene eseguito, poiché 'c2' è 'true' mentre 'c3' è 'false'
}
Grazie MILLE a chi risponderà a tutte le mie domande ps: ma perché è stata creata questa distinzione, uno non bastava???
Ultima modifica di Newbyte98 : 24-11-2014 alle 09:14. |
|
|
|
|
|
#2 | ||
|
Member
Iscritto dal: Apr 2008
Messaggi: 60
|
Quote:
come logica, lo switch è uguale all'IF nidificato in quanto una volta entrato in un case, poi c'è il BREAK che esclude gli altri test! l'IF nidificato, è migliore dei test in sequenza (se una condizione esclude l'altra): esempio se a=1 il codice Codice:
if (a==1) ..... //esegue il test, ma anche il blocco if if (a==2)...... //esegue solo il test ma è inutile. fa una istruzione in più Quote:
se (IF) c1=TRUE allora esegui il codice seguente altrimenti (ELSE), (quindi C1 è FALSE) esegui quest'altro (test su c2) siccome c1 è true, non eseguirà mai il test su c2. in questo caso se il tuo programma deve eseguire il test anche su c2, non puoi nidificarli. devi scrivere: Codice:
if(c1) {
// il blocco viene eseguito
}
if(c2) {
// il blocco in questo caso lo esegue perché anche 'c2' è 'true'
// il ramo 'altrimenti', del primo test non esiste.
// il discorso fatto in precedenza
}
|
||
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Nel 99.9999% dei casi sono identici come prestazioni. Se il numero di "case" supera un certo limite (sopra i 10. non ricordo di preciso), ed i valori sono tutti contigui come in una enum, allora viene usata una branch table. In questo caso lo switch diventa più veloce della serie di if/else.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:24.




















