增强版 Switch

在 Java 14 中,switch 表达式(Switch Expressions) 正式从预览功能(Java 12/13 引入的预览特性)升级为标准功能。

在之前,Switch只是一个控制流程的语句,且像C语言一样必须记得 break,代码冗长。

而新版本则将其视为一个表达式,且支持箭头语法糖,以及分支内可以使用代码块(返回值使用 yield 关键字),分支全覆盖检测。

例如,一个旧版本的代码可以优化为:

public class OldSwitchExample {
    public static void main(String[] args) {
        String day = "MONDAY";
        int result;
 
        switch (day) {
            case "MONDAY":
                result = 1;
                break;
            case "TUESDAY":
                result = 2;
                break;
            case "WEDNESDAY":
                result = 3;
                break;
            default:
                result = 0;
        }
 
        System.out.println("Result: " + result);
    }
}

优化后:

public class NewSwitchExample {
    public static void main(String[] args) {
        String day = "MONDAY";
 
        // 使用 switch 表达式,直接返回值,避免了显式声明和赋值
        int result = switch (day) {
            case "MONDAY" -> 1;           // 使用 '->' 语法,简化分支逻辑
            case "TUESDAY" -> 2;
            case "WEDNESDAY" -> 3;
            default -> 0;                 // default 分支处理未匹配的情况
        };
 
        System.out.println("Result: " + result); // 打印结果
    }
}
 

更具体的空指针报错

Java 14 之前:

Java 14 之后: