温馨提示×

温馨提示×

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

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

java switch开关能判空吗

发布时间:2026-09-15 20:39:45 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

Java 的 switch 语句里,是可以“判断空(null)”的,但要注意版本和写法


一、结论速览

  • 可以判空,但通常是 显式判断 null
  • 不能直接把 null 作为 case 的值
  • ⚠️ switch 的表达式为 null 而不处理,会抛 NullPointerException

二、传统 switch(Java 7+)

String s = null;

if (s == null) {
    System.out.println("null");
} else {
    switch (s) {
        case "a":
            System.out.println("a");
            break;
        case "b":
            System.out.println("b");
            break;
    }
}

✅ 正确
❌ 不能写:

switch (s) {
    case null:  // 编译错误
        break;
}

三、Java 17+(增强 switch,预览 → 正式)

Java 17 开始(正式于 Java 21),支持:

switch (s) {
    case null -> System.out.println("null");
    case "a" -> System.out.println("a");
    case "b" -> System.out.println("b");
    default -> System.out.println("other");
}

可以直接 case null
✅ 不会抛异常


四、如果 switch 表达式是 null 会怎样?

String s = null;
switch (s) {  // NullPointerException
    case "a":
        break;
}

⚠️ 旧版 switch 直接 NPE


五、最佳实践 ✅

1️⃣ 防御性写法(推荐)

switch (Objects.toString(s, "")) {
    case "a": ...
}

2️⃣ 或先判空

if (s == null) {
    ...
} else {
    switch (s) { ... }
}

3️⃣ Java 17+ 直接用 case null


六、总结一句话

Java switch 能判空,但老版本要先手动判,新版本可以直接 case null

如果你告诉我 Java 版本,我可以给你最合适的写法。

向AI问一下细节

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

AI