Podemos definir la sentencia Switch como una serie de ifs anidados.
En el caso del switch tenemos una variable, que puede tener diferentes valoresm, y queremos realizar diferentes acciones para cada uno de sus valores. En este caso podriamos anidar distintos if-else, uno para cada valor, y esto iria evaluando en cada if el valor correcto y entraria dentro del código. Con el switch nos permite hacer lo mismo pero de una manera mucho más eficiente.
Es decir esto :
if (dayOfWeek == 1)
dayTest = "It's monday";
else if (dayOfWeek == 2)
dayTest = "It's tuesday";
else if (dayOfWeek == 3)
dayTest = "It's wednesday";
se convierte en esto :
int dayOfWeek = 3;
String dayTest = "";
switch (dayOfWeek){
case 1 :
dayTest = "It's monday";
break;
case 2:
dayTest = "It's tuesday";
break;
case 3:
dayTest = "It's wednesday";
break;
case 4:
dayTest = "It's thursday";
break;
case 5:
dayTest = "It's friday";
break;
default:
dayTest = "It's weekend";
}
System.out.println(dayTest);
Como vemos en el switch ponemos nuestra variable y en cada case el valor con el que queremos comprobar.
El switch tiene diferentes restricciones/ características.
Dentro de cada case, podemos poner tantas sentencias distintas como queramos pero debemos acabar siempre con un break, si no, continuara por las instrucciones del siguiente case sin hacer caso a la condición de entrada.
Podemos tener un valor por default (es opcional), que entrará cuando no haya entrado en ninguno de los anteriores casos, y es el único que no le pondremos break.
Y muy importante, no podemos tener casos duplicados, si no nos dará un error.