箭头式 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 反馈 — 无需本地设置。
此课程中的所有课时
- 箭头式 switch
- 将 switch 用作表达式
- yield 关键字
- 多标签 case