温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Switch开关如何升级

发布时间:2026-07-26 05:26:45 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

Java 里的 switch 在不同版本中经历了几次重要升级,下面按 版本演进 给你系统梳理一下,并给出升级建议和示例


一、传统 switch(Java 1.0+)

最早期的写法,只能用于 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)
  • 不能返回值
  • 语法冗长

二、switch 表达式(Java 12 ~ 13,预览)

✅ Java 12 引入(预览)

✅ Java 13 继续预览

引入 箭头语法(->),避免 fall-through:

int day = 3;

String result = switch (day) {
    case 1 -> "周一";
    case 2 -> "周二";
    case 3 -> "周三";
    default -> "未知";
};

✅ 优点:

  • 不需要 break
  • 可以直接返回值
  • 更安全、更简洁

三、正式版 switch 表达式(Java 14+)

Java 14 正式转正

String result = switch (day) {
    case 1 -> "周一";
    case 2 -> "周二";
    case 3 -> "周三";
    default -> "未知";
};

此时 switch 已经是:

  • 表达式(有返回值)
  • 支持箭头语法
  • 不再需要 break

四、yield 返回值(Java 14+)

当 case 需要多行逻辑时,使用 yield

int score = 85;

String level = switch (score / 10) {
    case 10, 9 -> "优秀";
    case 8 -> {
        System.out.println("良好");
        yield "良好";
    }
    case 7 -> "中等";
    default -> "其他";
};

yield 用于 switch 表达式 中返回值


五、switch 支持的类型升级

Java 版本 支持类型
1.0 byte / short / char / int
5 enum
7 String
14+ switch 表达式 + 箭头

六、未来趋势(Java 17+ / 21+)

1️⃣ 模式匹配 switch(Java 17+ 预览)

Object obj = "hello";

String result = switch (obj) {
    case Integer i -> "整数:" + i;
    case String s -> "字符串:" + s;
    default -> "其他类型";
};

✅ switch 开始支持 类型判断(Pattern Matching)


2️⃣ Java 21:switch 模式匹配正式版

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)

七、升级建议(实际项目)

推荐做法

  • Java 8 → 升级到 Java 17 / 21
  • 新代码 优先使用 switch 表达式(->)
  • 不再使用传统 case: break

升级路径

传统 switch
   ↓
switch 表达式(Java 14+)
   ↓
模式匹配 switch(Java 21+)

八、常见错误对比

❌ 传统写法(易错)

case 1:
    result = "周一";
    // 忘记 break

✅ 新写法

case 1 -> "周一";

如果你愿意,可以告诉我:

  • 你当前 Java 版本
  • 遗留代码改造 还是 新项目

我可以直接帮你把旧 switch 改成最新写法 ✅

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI