Java Switch 表达式:模式匹配与箭头语法
掌握增强的 switch 表达式,支持箭头语法、多标签匹配和返回值,使条件分支更简洁安全。 · 难度:入门 · +15XP
传统 vs 新式 Switch
传统 switch 语句存在穿透、遗漏 break、作用域混乱等问题。Java 14+ 引入 switch 表达式,支持 -> 箭头语法和 yield 返回值。
箭头语法
String result = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> "休息日";
case TUESDAY -> "工作日";
case THURSDAY, SATURDAY -> "加班日";
case WEDNESDAY -> "会议日";
default -> "未知";
};yield 返回值
当需要代码块时,使用 yield 返回:
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 3;
case TUESDAY -> { System.out.println("周二"); yield 4; }
default -> 0;
};模式匹配预览(Java 17+)
Object obj = "Hello";
String result = switch (obj) {
case String s -> "字符串: " + s;
case Integer i -> "整数: " + i;
default -> "未知类型";
};要点总结
| 特性 | 传统 switch | switch 表达式 |
|---|---|---|
| 语法 | 冒号 + break | 箭头或 yield |
| 返回值 | 无(语句) | 有(表达式) |
| 穿透 | 容易发生 | 箭头语法自动避免 |
| 穷举性 | 不要求 | 必须穷举或提供 default |
练习提示
在 starter_code 中,补全 switch 表达式,使输入数字 1-7 返回对应的星期中文名。