Java 14 引入了一项重要的语言特性,即增强的 Switch 表达式。在此之前,Switch 语句主要用于多分支条件的控制流,而 Switch 表达式则是一种更为简洁和灵活的语法形式。
基本语法
传统的 Switch 语句:
int dayOfWeek = 3; String dayType; switch (dayOfWeek) { case 1: dayType = "Weekday"; break; case 2: case 3: case 4: case 5: dayType = "Weekday"; break; case 6: case 7: dayType = "Weekend"; break; default: dayType = "Invalid day"; }
Switch 表达式的新语法:
int dayOfWeek = 3; String dayType = switch (dayOfWeek) { case 1, 2, 3, 4, 5 -> "Weekday"; case 6, 7 -> "Weekend"; default -> "Invalid day"; };
特性和语法要点
- 箭头运算符 (->): Switch 表达式使用箭头运算符,使得语法更为简洁,不再需要显式的 break 语句。
- 多标签匹配: 可以在一个 case 标签下匹配多个值,使用逗号 , 隔开。
- 返回值: Switch 表达式具有返回值,可以将结果直接赋给变量。
- 新的 Default 分支语法:使用 default -> 代替传统的 default:。
- Switch 表达式作为语句和作为表达式: Switch 表达式可以作为语句(没有返回值)或作为表达式(有返回值)。上面的例子中展示的是作为表达式的用法。
使用场景
Switch 表达式在编写更简洁、易读的代码时非常有用。它特别适合在多个分支中需要返回值的情况下,可以避免冗长的 if-else 结构。
需要注意的是,Switch 表达式并不是完全取代传统的 Switch 语句,而是在一些情况下提供了更为紧凑和清晰的语法形式。
小提示:JEP 361 特性经过 JDK 12 和 JDK 13 两个预览版本的历练,最终在 JDK 14 中定稿。因此,虽然部分功能在 JDK 12 和 JDK 13 中也可见,但真正推荐的使用环境还是 JDK 14 及其之后的版本。