Saltar al contenido principal

Switch

Java dispone de la sentencia switch. Su sintaxis es la siguiente:

switch (expresion){
case valor1:
// bloque de instrucciones 1
case valor2:
// bloque de instrucciones 2
...
case valorN:
// bloque de instrucciones n
default:
// bloque de instrucciones por defecto
}

La evaluación de la expresión debe dar un resultado entero, convertible a entero o valor de tipo String. La cláusula default es opcional. La dinámica del switch es la siguiente:

Vemos un ejemplo sencillo:

int a = 8;

switch(a){
case 1:
System.out.print("a");
case 5:
System.out.print("b");
case 8:
System.out.print("c");
case 9:
System.out.print("d");
case 11:
System.out.print("e");
default:
System.out.print("f");
}
  1. Evaluamos la expresión principal: en este caso el resultado es 8.
  2. Comprobamos uno a uno el valor de cada case. En este caso solo el tercer case tiene asociado el valor 8.
  3. Se ejecuta el conjunto de instrucciones desde el tercer case hasta el final. Por lo tanto se imprime: cdef.

Como puede verse, dependiendo del orden en que coloquemos las cláusulas case, se ejecutarán unas instrucciones u otras.

Si queremos que solo se ejecute un bloque, debemos utilizar la sentencia break tras cada bloque de instrucciones.

switch (expresion){
case valor1:
// bloque de instrucciones 1
break;
case valor22:
// bloque de instrucciones 2
break;
...
case valorN:
// bloque de instrucciones n
break;
default:
// bloque de instrucciones por defecto
break;
}

Vemos un ejemplo sencillo:

int a = 8;

switch(a){
case 1:
System.out.print("a");
break;
case 5:
System.out.print("b");
break;
case 8:
System.out.print("c");
break;
case 9:
System.out.print("d");
break;
case 11:
System.out.print("e");
break;
default:
System.out.print("f");
break;
}

De este modo solo se imprimiría: c.