温馨提示×

温馨提示×

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

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

java switch开关适用范围

发布时间:2026-09-15 21:13:48 来源:亿速云 阅读:87 作者:小樊 栏目:编程语言

Java 中,switch 语句(或 switch 表达式)并不是所有类型都能用,它有明确的适用范围(支持的类型)版本限制。下面按 Java 版本 给你一个清晰总结。


一、传统 switch 语句支持的类型(Java 7 及以前)

✅ 只能用于以下类型:

  1. 整数类型

    • byte
    • short
    • char
    • int
  2. 枚举类型(enum)

    • Java 5 引入
  3. 字符串(String)

    • Java 7 开始支持

❌ 不支持:

  • long
  • float
  • double
  • boolean
  • 包装类(如 Integer 在老版本不能直接用,需拆箱)

二、Java 7+ 示例代码

switch (str) {
    case "A":
        System.out.println("A");
        break;
    case "B":
        System.out.println("B");
        break;
}
switch (day) { // enum
    case MONDAY:
        break;
}

三、Java 14+(正式特性)switch 表达式增强

1️⃣ 支持的类型扩展

除了上述类型外,switch 表达式仍然 只支持

  • byte / short / char / int
  • enum
  • String

⚠️ 依然不支持 longbooleanfloatdouble


2️⃣ 新语法(箭头语法)

int num = switch (x) {
    case 1 -> 10;
    case 2 -> 20;
    default -> 0;
};

四、Java 17 / 21 中的现状

  • ✅ 支持 模式匹配(Preview / 正式)
  • switch 可用于:
    • 基本类型
    • 枚举
    • 字符串
    • null 判断(Java 21 起更完善)

示例(Java 21):

switch (obj) {
    case String s -> System.out.println(s);
    case Integer i -> System.out.println(i);
    case null -> System.out.println("null");
    default -> System.out.println("unknown");
}

五、常见误区总结 ❌

类型 是否可用
long
boolean
float / double
Integer(直接) ❌(需拆箱)
String ✅(Java 7+)
enum
null ⚠️ 旧版不支持,新版支持

六、什么时候不适合用 switch

  • 条件是 范围判断(如 x > 10
  • 条件是 复杂布尔逻辑
  • 分支非常多且不稳定(建议用 Map 或策略模式)

如果你愿意,我也可以:

  • 对比 if-elseswitch
  • 给你 性能对比
  • switch 的字节码实现

你更想了解哪一块?

向AI问一下细节

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

AI