Ir al contenido

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.


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 break es 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 un break o hasta que termine el switch.

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 case representa un posible valor de la variable.
  • La sintaxis tradicional usa break para 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 default se ejecuta si ningún case coincide.

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");
}

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");
}
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