0Pricing
Java Academy · 课时

箭头式 switch

使用现代 switch 箭头语法

箭头式 switch 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

旧式分支语句的问题

经典 Java switch 语句使用冒号标签,并要求在每个分支后写入 break。忘记 break 会导致分支贯穿错误,使执行流程进入下一个分支。

现代 Java(14 及更高版本)引入了箭头语法,彻底解决了这个问题。

箭头语法基础

使用箭头形式的 switch 时,每个标签使用 -> 而不是 :。不会发生分支贯穿,也无需中断语句。每个分支只执行自己的代码。

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

不再需要中断语句

在旧式写法中,您必须在每个分支后写入 break;。箭头形式完全免除了这一负担。只有匹配的分支会执行。

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

代码块主体

当一个分支需要多条语句时,请将其放在花括号 { } 中。代码块可以包含任意数量的语句。

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

对字符串使用分支语句

箭头形式的 switch 与旧式写法一样适用于 String 值。内部使用 equals 进行比较,因此比较区分大小写。

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

默认分支

default 分支会处理其他分支未覆盖的所有值。通常建议始终包含一个默认分支,以便妥善处理意外输入。

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

对枚举使用分支语句

箭头形式的 switch 与 enum 类型非常契合。您可以省略每个标签中的枚举名称前缀,使分支更简洁清晰。

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

在分支中调用方法

每个箭头分支都可以调用任意方法。这样可以保持 switch 的可读性,同时将实际工作委托到其他位置。

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

比条件链更简洁

箭头形式的 switch 通常可以替代很长的条件链。当您需要将一个变量与多个固定值进行比较时,使用 switch 更清晰。

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

仅执行操作

switch 语句(本处使用箭头形式)会执行操作,但不会产生值。要返回值,您需要使用 switch 表达式,下一课将介绍这一内容。

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

多个值共享一个分支

可以使用逗号分隔多个值,让它们共享一个分支。这是后面将介绍的多标签分支的预览。

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

快速检查

与旧式的冒号写法相比,箭头形式的 switch 主要优势是什么?

回顾

您学习了现代箭头形式的 switch 语法:

  • 使用 -> 而不是 :
  • 不会发生分支贯穿,也无需 break
  • 对于包含多条语句的分支,请使用花括号 { }
  • 使用逗号分隔标签,让它们共享一个分支
  • 始终包含一个 default 分支

常见问题解答

「箭头式 switch」课时是免费的吗?

是的 — 「箭头式 switch」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「箭头式 switch」这节课中我会学到什么?

使用现代 switch 箭头语法 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「箭头式 switch」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 箭头式 switch
  2. 将 switch 用作表达式
  3. yield 关键字
  4. 多标签 case
← 返回 Java Academy