微信网站名,域名访问网站怎么下载,将自己做的网站发布到,重庆网Java12引入了对switch语句的增强#xff0c;允许在switch语句中使用表达式来代替传统的语句列表。这样可以使得代码更加简洁和易读。
switch表达式也是作为预览语言功能的第一个语言改动被引入新版Java中来的#xff0c;这是一种引入新特性的测试版的方法。通过这种方式允许在switch语句中使用表达式来代替传统的语句列表。这样可以使得代码更加简洁和易读。
switch表达式也是作为预览语言功能的第一个语言改动被引入新版Java中来的这是一种引入新特性的测试版的方法。通过这种方式能够根据用户反馈进行升级、更改如果没有被很好的接纳则可以完全删除该功能。预览功能的没有被包含在JavaSE规范中。也就是说这不是一个正式的语法是暂时进行测试的一种语法。
传统的switch声明语句(switch statement)在使用中有一些问题
匹配自上而下若无break后面的case语句都会执行不同的case语句定义的变量名不能重复不能在一个case里写多个执行结果一致的条件整个switch不能作为表达式返回值
switch详细语法
扩展的switch语句不仅可以作为语句(statement)还可以作为表达式(expression)并且两种写法都可以使用传统的 switch语法或者使用简化的case L -模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作并为 switch中的模式匹配(JEP305)做好准备。
使用Java12中switch表达式的写法省去了break语句避免了因少写break而出错。
同时将多个case合并到一行显得简洁、清晰也更加优雅的表达逻辑分支其具体写法就是将之前的case语句表成了case L -即如果条件匹配case则执行标签右侧的代码同时标签右侧的代码段只能是表达式、代码块或throw语句。
为了保持兼容性case条件语句中依然可以使用字符这时fall-through规则依然有效的即不能省略原有的break语句但是同一个switch结构里不能混用-和:否则会有编译错误。并且简化后的switch代码块中定义的局部变量其作用域就限制在代码块中而不是蔓延到整个switch结构也不用根据不同的判断条件来给变量赋值。
JAVA12之前switch语句
package com.morris.java12;/*** 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;case MARCH:case APRIL:case MAY:season spring;break;case JUNE:case JULY:case AUGUST:season summer;break;case SEPTEMBER:case OCTOBER:case NOVEMBER:season autumn;break;default:throw new RuntimeException(NoSuchMonthException);}System.out.println(season); // spring}
}JAVA12中switch语句
package com.morris.java12;/*** java12中switch的使用*/
public class Switch12Demo {public static void main(String[] args) {Month month Month.APRIL;String season;switch (month) {case DECEMBER, JANUARY, FEBRUARY - season winter;case MARCH, APRIL, MAY - season spring;case JUNE, JULY, AUGUST - season summer;case SEPTEMBER, OCTOBER, NOVEMBER - season autumn;default - throw new RuntimeException(NoSuchMonthException);}System.out.println(season); // spring}
}switch作为表达式返回值
下面是一个简单的示例
package com.morris.java12;/*** java12中switch的使用作为表达式的返回值*/
public class Switch12Demo2 {public static void main(String[] args) {Month month Month.APRIL;String season switch (month) {case DECEMBER, JANUARY, FEBRUARY - winter;case MARCH, APRIL, MAY - spring;case JUNE, JULY, AUGUST - summer;case SEPTEMBER, OCTOBER, NOVEMBER - autumn;default - throw new RuntimeException(NoSuchMonthException);};System.out.println(season); // spring}
}在这个示例中switch语句的返回值是根据不同的case条件计算得出的。这种语法形式可以减少冗余的代码提高代码的可读性。