JDK14的新特性-Switch新功能
2020年3月17日,Oracle正式发布了JDK14版本,共新增了16项新特性
本文重点写一下关于switch的新功能:
switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。
JDK14之前的switch写法:
public class SwitchTest {
public static void main(String[] args) {
Weekday day = Weekday.MON; //初始化一个枚举变量
//case L:标签具有贯穿功能
switch (day){
case MON:
case TUE:
case WEN:
String s = ""; //这个标签中定义的局部变量在整个switch全部有效 再定义会报错:重复定义
System.out.println("上半周");
break;
case THU:
case FRI:
String s = ""; //重复定义报错
System.out.println("下半周");
case SAT:
case SUN:
System.out.println("周末");
}
System.out.println(""); }
//定义枚举
enum Weekday{
MON,TUE,WEN,THU,FRI,SAT,SUN
}
运行结果:
上半周
12
传统写法需要使用break来避免case贯穿
1.case L -> 标签取消了贯穿功能 case后面的常量可以使用逗号来分割多个常量
看下代码
public class SwitchTest {
public static void main(String[] args) {
Weekday day = Weekday.MON; //初始化一个枚举变量
//case L:标签具有贯穿功能
switch (day){//不需要break;
case MON, TUE, WEN -> {
System.out.println("上半周");
String s = "abc"; //局部变量只在当前代码块有效
}
case THU, FRI -> {
System.out.println("下半周");
String s = "def";
}
case SAT, SUN -> {
System.out.println("周末");
}
}
System.out.println("");
} //定义枚举
enum Weekday{
MON,TUE,WEN,THU,FRI,SAT,SUN
}
运行结果:
上半周
12
2.JDK14中扩展了switch可以作为表达式进行赋值或打印操作
public class SwitchTest {
public static void main(String[] args) {
Weekday day = Weekday.MON; //初始化一个枚举变量 //JDK14中扩展了switch可以作为表达式
//将表达式的值打印出来
System.out.println(switch(day){
case MON, TUE, WEN -> "上半周";
case THU, FRI -> "下半周";
case SAT, SUN -> "周末";
}); //将表达式的值赋值给一个变量
String text = switch(day){
case MON, TUE, WEN -> "上半周";
case THU, FRI -> "下半周";
case SAT, SUN -> "周末";
}; //通过yield产生一个新的值
day = Weekday.SAT;
int x = switch(day){
case MON, TUE, WEN -> 1;
case THU, FRI -> 2;
case SAT, SUN -> {
int rnd = (int)(Math.random()*10); //生成一个(0,10)内的随机整数
System.out.println("rnd = " + rnd);
yield rnd; //通过yield产生一个新的值
};
}; System.out.println("x = " + x);
}
} //定义枚举
enum Weekday{
MON,TUE,WEN,THU,FRI,SAT,SUN
}
JDK14的新特性-Switch新功能的更多相关文章
- JDK1.8之后的新特性和新接口
接口的旧特性: 就特性下接口中只有: 常量(必须赋值) 抽象方法abstract(和final static private三个关键字冲突) interface Inter { //int a ; / ...
- JDK1.8新特性——使用新的方式遍历集合
JDK1.8新特性——使用新的方式遍历集合 摘要:本文主要学习了在JDK1.8中新增的遍历集合的方式. 遍历List 方法: default void forEach(Consumer<? su ...
- PHP 5.6正式发布:新特性、及功能改进介绍
经过了长时间的开发测试,新版本PHP程序(PHP5.6正式版)终于发布了.新版本中加入了一些实用的新特性,也摒弃了一些冗余的功能.同时,也对部分原有功能进行了改进.下面就一起看看PHP 5.6正式版到 ...
- hadoop3.0新特性及新功能
Hadoop-3.0.0-alpha2版本发布,相比之前的hadoop-2.x有一系列的功能增强.但目前还是个alpha版本,有很多bug,且不能保证API的稳定和质量. 主要变化 Java最低版本要 ...
- Java12新特性 -- switch表达式
传统switch表达式的弊端: 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行: 所有的case语句共用一个块范围,在不同的case语句定义的变量名不能重复: 不能在 ...
- Oracle12c功能增强 新特性之管理功能的增强
1. 数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...
- Firefox 23中的新特性(新陷阱)
话说有一天突然发现我们的网站页面上的JQuery功能都失效了,Firebug中显示如下的错误 Blocked loading mixed active content "http://xxx ...
- HTML5 的新特性以及新标签的浏览器兼容问题
新特性: HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加. 1) 拖拽释放(Drag and drop) API 2) 语义化更好的内容标签(heade ...
- Kubernetes1.3新特性:新的资源回收控制器
(一) 核心概念 在kubernetes1.3中新增了一个资源回收控制器GarbaseCollector,用这个控制器来替代kubernetes1.3中的资源回收控制器GC. 如下为kubernet ...
随机推荐
- linux查看端口号占用命令-top
题记 对于top命令来说,基本是都是linux命令入门中,第一个使用的命令,在windows中电脑如果卡顿,回去任务栏中查看cpu和内存的使用情况.top命令实现的就是这个重要的功能. 在系统维护的过 ...
- python数据类型简介
python中的注释:注释仅仅是给人看的,python并不进行识别. 注释的分类: 单行注释:# 多行注释:用三对单引号或双引号 与用户交互: 1.python3中输入 关键字:input() pyt ...
- Event Handling Guide for iOS(五)
基本概念: 加速计: 又称加速度计,测量设备运动的加速度. 加速度: 矢量,描绘速度的方向和大小变化的快慢. 陀螺仪: 感测与维持方向的装置. 原文: Motion Event声明: 由于本人水平有限 ...
- cssy元素居中的方法有哪些?
css的元素居中 各位小伙伴们在努力写网页的时候有没有遇到过这样的一个问题呢? 在写的时候发现他不居中,可是要分分钟逼死强迫症的啊! 别急,我来啦 哈哈哈 今天就带来三种css的元素居中的方法 第一种 ...
- Windows 10 右键 在此处打开 CMD
1. 打开注册表 # 1. 使用快捷键打开 “运行” # win + r # 2. 在 “运行” 中输入 # regedit # 3. 回车 2. 创建与设置 OpenCMDHere # 1. 切换到 ...
- sql04
1.类型转换 ),ClassId)+name from [user]; 2.一次性插入多条数据 3.日期函数 1)getdate() 返回当前日期 2)dateadd 计算增加后的时间 ,'2020- ...
- fsLayuiPlugin多数据表格使用
fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...
- 精简TTF字体、FontPruner、汉字字体瘦身(非字蛛)
20190726更新 标黄部分 网上比应用比较多的 字蛛 http://font-spider.org/ 本文使用了本机安装软件,得到瘦身后的 TTF 字体文件 准备工具: python : 我使用是 ...
- createjs的compositeOperation在Android和IOS上接受的参数居然不一样
例如 目标.compositeOperation = 如果是安卓? "darken" : "darker";
- 微信h5页面audio标签在ios下不能自动播放
背景介绍:在一个h5页面中,当用户提交表单到后台,后台返回的结果成功的话,开始自动播放背景音乐 出现的问题:在安卓手机上正常,iOS中没有反应 后来网上一番搜索后了解到时因为iOS不允许自动播放音乐, ...