Java12新特性 -- switch表达式
-- 特性 表达式 switch
2023-09-14 08:59:00 时间
传统switch表达式的弊端:
- 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行;
- 所有的case语句共用一个块范围,在不同的case语句定义的变量名不能重复;
- 不能在一个case里写多个执行结果一致的条件;
- 整个switch不能作为表达式返回值;
java 12 switch新特性:
- 使用 Java 12 中 Switch 表达式的写法,省去了 break 语句,避免了因少写 break 而出错。
- 同时将多个 case 合并到一行,显得简洁、清晰也更加优雅的表达逻辑分支,其具体写法就是将之前的 case 语句表成了:case L ->,即如果条件匹配 case L,则执行标签右侧的代码 ,同时标签右侧的代码段只能是表达式、代码块或 throw 语句。
- 为了保持兼容性,case 条件语句中依然可以使用字符 : ,这时 fall-through 规则依然有效的,即不能省略原有
的 break 语句,但是同一个 Switch 结构里不能混用 -> 和 : ,否则会有编译错误。并且简化后的 Switch 代码块中定义的局部变量,其作用域就限制在代码块中,而不是蔓延到整个 Switch 结构,也不用根据不同的判断条件来给变量赋值。
public class SwitchTest1 {
public static void main(String[] args) {
Week day = Week.FRIDAY;
switch (day) {
case MONDAY,FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
default -> throw new IllegalStateException("What day is today?" + day);
}
}
}
public class SwitchTest2 {
public static void main(String[] args) {
Week day = Week.FRIDAY;
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException("What day is today?" + day);
};
}
}
相关文章
- 《安富莱嵌入式周报》第273期:2022.07.04--2022.07.10
- AQS源码剖析第三篇--共享模式
- PS干货分享--全版本下载 ps最新软件安装包
- Lr软件下载Lightroom Classic各版本安装技巧--LRC介绍
- React高级特性--Render Props
- app自动化测试(Android)-- 参数化用例
- 从0开始入门Chrome Ext安全(三) -- 你所未知的角落 - Chrome Ext安全
- slurm--高吞吐量计算管理指南
- Java8新特性--Lambda表达式
- HTML--标签参考手册【字母排序】
- Linux管理员手册(6)--登录和注销
- Access使用宏控制程序--1.6.使用宏的几点说明
- 学习YUI.Ext第六天--关于树TreePanel(Part2异步获取节点)
- jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
- 与MSSQL对比学习MYSQL的心得(一)--基本语法