switch 表达式类型只能是byte、short、int、char JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。 case给出的值不允许重复,且只能是字面量,不能是变量。 不要忘记写break,否则会出现穿透现象。 JDK12以上的另一种写法 publicvoidTest(){intnum =10;switch(num){case1->{ System.out.println...
switch的case语句可以处理int,short,byte,char类型的值,但是不能处理long,String等类型。 因为short,byte,char都会转换成int进行处理,这一点也可以从生成的字节码看出。 char a = 'e'; switch (a) { case 'c': System.out.println("In case c"); break; case 'd': System.out.println("In case d")...
更简洁的语法:Java 12 引入了一种更简洁的 switch 表达式语法,允许你在一个表达式中处理多个值。这被称为 “模式匹配”(pattern matching)。示例:int dayOfWeek = 3; String day = switch (dayOfWeek) { case 1, 2, 3, 4, 5 -> "工作日"; case 6, 7 -> "周末"; default -> throw new IllegalSt...
● case语句中不一定非要带有break语句。如果case后没有 break 语句,程序会继续执行下一个case 语句,直到出现 break 语句,这种现象叫做”case穿透“。● switch语句中可以包含一个default默认分支,该分支一般是 switch 语句的最后一个分支,当switch的值和case语句的值不相等时执行。default 分支中不用带有break ...
2、switch新特性 2.1概述 我们知道,在使用switch时有可能会出现”case穿透“现象。如果你遗漏了break语句,有可能会造成严重的逻辑错误,而且这种错误还不太容易在源码中发现。所以为了防止意外出现”case穿透“,从JDK 12开始,switch语句升级成了更简单的表达式语法,使用了一种类似于模式匹配(Pattern Matching)的方式,确保...
* java12之前switch的使用 */ public class SwitchBefore12Demo { public static void main(String[] args) { Month month = Month.APRIL; String season; switch (month) { case DECEMBER: case JANUARY: case FEBRUARY: season = "winter"; break; ...
Java 12引入了一个新的特性,即Switch表达式。Switch表达式允许我们使用更简洁和易读的语法来编写条件分支代码。在传统的Switch语句中,我们需要使用break语句来终止每个case分支,而在Switch表达式中,我们可以直接返回一个值。以下是一个使用Switch表达式的示例:public class SwitchExample { public static void main(String[...
在之前的Java 17新特性中,我们介绍过关于JEP 406: switch的模式匹配,但当时还只是关于此内容的首个预览版本。之后在JDK 18、JDK 19、JDK 20中又都进行了更新和完善。如今,在JDK 21中,该特性得到了最终确定!下面,我们就再正式学习一下该功能! 在以往的switch语句中,对于case中的类型匹配限制是很多的。比如下面...
switch的新特性可是源远流长,早在JDK 12就以预览功能被引入了,最终在JDK 14成为了正式版本的功能:JEP 361: Switch Expressions (Standard)。 其实Switch新增的功能有两个,一个就是可以连写case,一个就是switch可以带返回值了。 写在前面 就在我兴致勃勃的想要创建一个以switch命名的package的时候,突然间发现在IDE...