¿Por qué necesitamos una pausa después de las declaraciones de casos?
¿Por qué el compilador no coloca automáticamente declaraciones de interrupción después de cada bloque de código en el cambio? ¿Es por razones históricas? ¿Cuándo le gustaría que se ejecutaran varios bloques de código?
A veces es útil tener varios casos asociados con el mismo bloque de código, como
case 'A':
case 'B':
case 'C':
doSomething();
break;
case 'D':
case 'E':
doSomethingElse();
break;
etc. Sólo un ejemplo.
En mi experiencia, generalmente es un mal estilo "fallar" y ejecutar múltiples bloques de código para un caso, pero puede tener usos en algunas situaciones.
Históricamente , se debe a que case
esencialmente definía un punto de destinolabel
de una llamada. La declaración de cambio y sus casos asociados en realidad solo representan una rama multidireccional con múltiples puntos de entrada potenciales a un flujo de código.goto
Dicho todo esto, se ha observado un número casi infinito de veces que break
casi siempre es el comportamiento predeterminado que preferirías tener al final de cada caso.
Java proviene de C y esa es la sintaxis de C.
Hay ocasiones en las que desea que varias declaraciones de casos tengan solo una ruta de ejecución. A continuación se muestra un ejemplo que le indicará cuántos días tiene un mes.
class SwitchDemo2 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0))
|| (year % 400 == 0) )
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("Invalid month.");
break;
}
System.out.println("Number of Days = " + numDays);
}
}