Switch statements en Java

🎛️ Switch statements en Java

En este tutorial vamos a ver los switch statements en Java.

Los usamos para ejecutar diferentes partes del código dependiendo del valor de una expresión. Es parecido a un if/else if/else, pero a veces se ve más limpio.

👤 Ejemplo: rol del usuario

Imaginemos que queremos verificar el rol del usuario actual y mostrar un mensaje:

  • si es admin → “Tú eres un administrador”
  • si es moderador → “Eres moderador”
  • si no → “Eres invitado”

(En un programa real el rol no lo hardcodeamos, lo leeríamos de otra parte).

✅ Con if/else if/else

⚠️ Nota importante: para comparar String en Java debemos usar .equals(...), no ==.

public class Main{
    public static void main(String[] args){
        String role = "admin";

        if (role.equals("admin"))
            System.out.println("Tú eres un administrador");
        else if (role.equals("moderador"))
            System.out.println("Eres moderador");
        else
            System.out.println("Eres invitado");
    }
}

🔁 Lo mismo con switch

Con switch a veces queda más ordenado:

public class Main{
    public static void main(String[] args){
        String role = "admin";

        switch (role){
            case "admin":
                System.out.println("Tú eres un administrador");
                break;

            case "moderador":
                System.out.println("Eres moderador");
                break;

            default:
                System.out.println("Eres invitado");
        }
    }
}

🧱 ¿Cómo funciona switch?

Un switch tiene:

  • switch (expresión)
  • un bloque { ... }
  • varios case ...:
  • y opcionalmente un default:

📌 default se ejecuta si ningún caso coincide.

🛑 ¿Para qué sirve break?

El break sirve para salir del switch.

Si no pones break, pasa algo llamado fall-through:

  • entra a un case
  • ejecuta ese código
  • y sigue ejecutando el siguiente case también 😵

Por eso normalmente cada case termina con break.

⚠️ Demo rápida: fall-through (sin break)

switch (role){
    case "admin":
        System.out.println("Admin");
    case "moderador":
        System.out.println("Moderador");
}

Si role es "admin", imprimirá:

Admin
Moderador

😬 Por eso: casi siempre usamos break.

🔢 Switch también funciona con números

No solo con String. También podemos usar:

  • byte, short, int
  • (y otros tipos compatibles)

Ejemplo con int:

public class Main{
    public static void main(String[] args){
        int role = 1;

        switch (role){
            case 1:
                System.out.println("Tú eres un administrador");
                break;

            case 2:
                System.out.println("Eres moderador");
                break;

            default:
                System.out.println("Eres invitado");
        }
    }
}

🤝 If vs Switch

  • if/else es mejor cuando tienes rangos o condiciones complejas (ej: temp > 20 && temp <= 30)
  • switch es ideal cuando comparas un valor contra varios casos (ej: role es “admin”, “moderador”, etc.)