0Pricing
Java Academy · Lección

switch con flecha

Use la sintaxis moderna de flecha de switch

switch con flecha es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

El problema del switch antiguo

La sentencia clásica switch de Java utilizaba etiquetas con dos puntos y exigía un break después de cada caso. Olvidar break provocaba errores de fall-through, en los que la ejecución pasaba al caso siguiente.

Java moderno (14 o posterior) introduce la sintaxis de flecha, que soluciona este problema por completo.

Conceptos básicos de la sintaxis de flecha

Con el estilo de flecha de switch, cada etiqueta utiliza -> en lugar de :. No hay fall-through ni hace falta break. Cada rama ejecuta únicamente su propio código.

public class Main {
    public static void main(String[] args) {
        int day = 3;
        switch (day) {
            case 1 -> System.out.println("Monday");
            case 3 -> System.out.println("Wednesday");
            default -> System.out.println("Other day");
        }
    }
}

Se acabó break

Con el estilo antiguo, debía escribir break; después de cada caso. La forma con flecha elimina por completo esa obligación. Solo se ejecuta la rama coincidente.

public class Main {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A' -> System.out.println("Excellent");
            case 'B' -> System.out.println("Good");
            case 'C' -> System.out.println("Average");
            default -> System.out.println("Needs work");
        }
    }
}

Cuerpos de bloque

Cuando una rama necesita más de una instrucción, debe envolverla entre llaves { }. El bloque puede contener cualquier cantidad de instrucciones.

public class Main {
    public static void main(String[] args) {
        int code = 2;
        switch (code) {
            case 2 -> {
                System.out.println("Processing code 2");
                System.out.println("Done");
            }
            default -> System.out.println("Unknown");
        }
    }
}

Usar switch con Strings

El switch con flechas funciona con valores String igual que el estilo antiguo. Internamente, las comparaciones utilizan equals, por lo que distinguen entre mayúsculas y minúsculas.

public class Main {
    public static void main(String[] args) {
        String fruit = "apple";
        switch (fruit) {
            case "apple" -> System.out.println("Red or green");
            case "banana" -> System.out.println("Yellow");
            default -> System.out.println("Unknown fruit");
        }
    }
}

La rama default

La rama default gestiona cualquier valor que no esté contemplado por los demás casos. Es una buena práctica incluirla siempre para gestionar correctamente las entradas inesperadas.

public class Main {
    public static void main(String[] args) {
        int level = 99;
        switch (level) {
            case 1 -> System.out.println("Beginner");
            case 2 -> System.out.println("Intermediate");
            default -> System.out.println("Unknown level: " + level);
        }
    }
}

Usar switch con enums

El switch con flechas combina perfectamente con los tipos enum. Puede omitir el prefijo del nombre del enum en cada etiqueta, lo que mantiene las ramas breves y claras.

public class Main {
    enum Color { RED, GREEN, BLUE }
    public static void main(String[] args) {
        Color c = Color.GREEN;
        switch (c) {
            case RED -> System.out.println("Stop");
            case GREEN -> System.out.println("Go");
            case BLUE -> System.out.println("Calm");
        }
    }
}

Llamar a métodos en las ramas

Cada rama con flecha puede llamar a cualquier método. Esto mantiene legible el switch y delega el trabajo real en otro lugar.

public class Main {
    static void greet(String who) {
        System.out.println("Hello, " + who);
    }
    public static void main(String[] args) {
        int who = 1;
        switch (who) {
            case 1 -> greet("Alice");
            case 2 -> greet("Bob");
            default -> greet("Stranger");
        }
    }
}

Más claro que if-else

El switch con flechas suele sustituir a cadenas largas de if-else. Cuando compara una variable con muchos valores fijos, switch resulta más claro.

public class Main {
    public static void main(String[] args) {
        int month = 4;
        switch (month) {
            case 12, 1, 2 -> System.out.println("Winter");
            case 3, 4, 5 -> System.out.println("Spring");
            case 6, 7, 8 -> System.out.println("Summer");
            default -> System.out.println("Autumn");
        }
    }
}

Solo efectos secundarios

Una sentencia switch (aquí se utiliza la forma con flechas) realiza acciones, pero no produce ningún valor. Para devolver un valor, debe utilizar una expresión switch, que se explica en la lección siguiente.

public class Main {
    public static void main(String[] args) {
        int n = 5;
        switch (n % 2) {
            case 0 -> System.out.println(n + " is even");
            case 1 -> System.out.println(n + " is odd");
        }
    }
}

Varios valores, una sola rama

Varios valores pueden compartir una rama si se separan con comas. Esto es una introducción a los casos con varias etiquetas, que se explican más adelante.

public class Main {
    public static void main(String[] args) {
        char c = 'e';
        switch (c) {
            case 'a', 'e', 'i', 'o', 'u' -> System.out.println("Vowel");
            default -> System.out.println("Consonant");
        }
    }
}

Comprobación rápida

¿Cuál es la principal ventaja del switch con sintaxis de flecha frente al estilo antiguo con dos puntos?

Repaso

Ha aprendido la sintaxis moderna de switch con flechas:

  • Utilice -> en lugar de :
  • No hay fall-through y no hace falta break
  • Utilice llaves { } para las ramas con varias instrucciones
  • Separe las etiquetas con comas para compartir una rama
  • Incluya siempre una rama default

Preguntas frecuentes

¿La lección «switch con flecha» es gratis?

Sí — el texto completo de «switch con flecha» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «switch con flecha»?

Use la sintaxis moderna de flecha de switch Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «switch con flecha»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. switch con flecha
  2. switch como expresión
  3. La palabra clave yield
  4. Casos con varias etiquetas
← Volver a Java Academy