Java 里的 switch 在不同版本中经历了几次重要升级,下面按 版本演进 给你系统梳理一下,并给出升级建议和示例。
最早期的写法,只能用于 byte / short / char / int / enum / String(Java 7 起):
int day = 3;
String result;
switch (day) {
case 1:
result = "周一";
break;
case 2:
result = "周二";
break;
case 3:
result = "周三";
break;
default:
result = "未知";
}
break(fall-through)引入 箭头语法(->),避免 fall-through:
int day = 3;
String result = switch (day) {
case 1 -> "周一";
case 2 -> "周二";
case 3 -> "周三";
default -> "未知";
};
✅ 优点:
break✅ Java 14 正式转正
String result = switch (day) {
case 1 -> "周一";
case 2 -> "周二";
case 3 -> "周三";
default -> "未知";
};
此时 switch 已经是:
break当 case 需要多行逻辑时,使用 yield:
int score = 85;
String level = switch (score / 10) {
case 10, 9 -> "优秀";
case 8 -> {
System.out.println("良好");
yield "良好";
}
case 7 -> "中等";
default -> "其他";
};
✅ yield 用于 switch 表达式 中返回值
| Java 版本 | 支持类型 |
|---|---|
| 1.0 | byte / short / char / int |
| 5 | enum |
| 7 | String |
| 14+ | switch 表达式 + 箭头 |
Object obj = "hello";
String result = switch (obj) {
case Integer i -> "整数:" + i;
case String s -> "字符串:" + s;
default -> "其他类型";
};
✅ switch 开始支持 类型判断(Pattern Matching)
Object obj = 123;
switch (obj) {
case Integer i when i > 100 -> System.out.println("大于100");
case Integer i -> System.out.println("整数");
case String s -> System.out.println("字符串");
default -> System.out.println("其他");
}
✅ 支持:
when 条件(guard)✅ 推荐做法
case: break✅ 升级路径
传统 switch
↓
switch 表达式(Java 14+)
↓
模式匹配 switch(Java 21+)
❌ 传统写法(易错)
case 1:
result = "周一";
// 忘记 break
✅ 新写法
case 1 -> "周一";
如果你愿意,可以告诉我:
我可以直接帮你把旧 switch 改成最新写法 ✅
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。