switch-case
La sentencia switch permite ejecutar un bloque de código dependiendo del valor de una variable. A diferencia de if-else, que evalúa expresiones booleanas, switch compara el valor de una variable con diferentes casos predefinidos.
Sintaxis básica
Sección titulada «Sintaxis básica»Sintaxis tradicional (con break)
Sección titulada «Sintaxis tradicional (con break)»La sintaxis tradicional de switch ha estado presente desde las primeras versiones de Java y requiere el uso explícito de break para evitar la ejecución de múltiples casos.
switch (variable) { case valor1: System.out.println("Caso 1 ejecutado"); break; case valor2: System.out.println("Caso 2 ejecutado"); break; default: System.out.println("Caso por defecto ejecutado");}Nota: El
breakes opcional, pero su uso evita que el flujo de ejecución continúe con los siguientes casos una vez que se ha encontrado una coincidencia. Si no se incluye, se ejecutarán los bloques siguientes hasta encontrar unbreako hasta que termine elswitch.
Sintaxis moderna (con ->)
Sección titulada «Sintaxis moderna (con ->)»Desde el JDK 12, se introdujo una sintaxis más concisa para switch donde se usa -> en lugar de : y no es necesario el uso de break.
switch (variable) { case valor1 -> System.out.println("Caso 1 ejecutado"); case valor2 -> System.out.println("Caso 2 ejecutado"); default -> System.out.println("Caso por defecto ejecutado");}- La variable evaluada debe ser de tipo
byte,short,char,int,String(desde Java 7) o una enumeración (enum). - Cada
caserepresenta un posible valor de la variable. - La sintaxis tradicional usa
breakpara evitar la ejecución de múltiples casos. - La sintaxis moderna permite omitir
break, utilizando->para definir el código a ejecutar. - La cláusula
defaultse ejecuta si ningúncasecoincide.
Ejemplo:
public static void main(String[] args) { int numero = 3;
switch (numero) { case 0: System.out.println("Número cero"); break; case 1: System.out.println("Número uno"); break; case 2: System.out.println("Número dos"); break; case 3: System.out.println("Número tres"); break; default: System.out.println("Número desconocido"); }}Ejemplo con sintaxis moderna:
switch (numero) { case 0 -> System.out.println("Número cero"); case 1 -> System.out.println("Número uno"); case 2 -> System.out.println("Número dos"); case 3 -> System.out.println("Número tres"); default -> System.out.println("Número desconocido");}Caso default
Sección titulada «Caso default»Si ningún case coincide, se ejecuta el default:
int opcion = 5;
switch (opcion) { case 1: System.out.println("Seleccionaste la opción 1"); break; case 2: System.out.println("Seleccionaste la opción 2"); break; default: System.out.println("Opción inválida");}Usando la sintaxis moderna:
Sección titulada «Usando la sintaxis moderna:»switch (opcion) { case 1 -> System.out.println("Seleccionaste la opción 1"); case 2 -> System.out.println("Seleccionaste la opción 2"); default -> System.out.println("Opción inválida");}Salida:
Opción inválida