2020年3月发布的JDK 14附带了switch语句的更新版本。 这是JDK 12和JDK 13中的预览功能。

要了解差异,让我们看一个简单的示例。 假设我们要基于DayOfWeek枚举来计算每日工作时间。

使用旧的使用switch语句的方法,我们的解决方案可能如下所示:

 DayOfWeek day = ...  float expectedWorkingTime;  switch (day) { case MONDAY: case TUESDAY: case WEDNESDAY: case THURSDAY: expectedWorkingTime = 8f; break ; case FRIDAY: expectedWorkingTime = 6f; break ; default : expectedWorkingTime = 0f;  } 

使用新的switch语句(或表达式),我们可以像这样重写示例:

 DayOfWeek day = ...  final float expectedWorkingTime = switch (day) { case MONDAY, TUESDAY, WEDNESDAY, THURSDAY -> 8f; case FRIDAY -> 6f; default -> 0f;  }; 

因此,新功能:

  • switch关键字可用作表达式并返回一个值。 在此示例中,开关返回的值被分配给ExpectedWorkingTime。 请注意,这使我们可以使ExpectedWorkingTime为final,这在以前的解决方案中是不可能的。
  • 一个case语句可以包含多个值,以逗号分隔。
  • 在case语句中,冒号替换为箭头(->)
  • 使用箭头(->)语法时,不需要break关键字。 如果您更喜欢使用break,则在某些情况下仍可以使用较早的冒号语法。

新的收益声明

在前面的示例中,我们在箭头(->)的右侧返回一个简单值。 但是,也许我们需要首先计算该值,为此我们可能需要一些额外的代码行。

例如:

 final float expectedWorkingTime = switch (day) { case MONDAY, TUESDAY, WEDNESDAY, THURSDAY -> { if (isFullTimeEmployee) { yield 8 ; } yield 4 ; } case FRIDAY -> 6f; default -> 0f;  }; 

在这里,我们在第一个case语句中使用一个代码块来确定工作时间。 使用新的yield语句,我们从case块返回一个值(就像在方法中使用return一样)。

您可以在GitHub上找到本文中显示的示例。

翻译自: https://www.javacodegeeks.com/2020/04/java-14-looking-at-the-updated-switch-statement.html

Java 14:查看更新的switch语句相关推荐

  1. java switch语句_Java 14:查看更新的switch语句

    java switch语句 于2020年3月发布的JDK 14带有switch语句的更新版本. 这是JDK 12和JDK 13中的预览功能. 要了解差异,让我们看一个简单的示例. 假设我们要基于Day ...

  2. Java SE7新特性之switch语句中使用字符串

    2019独角兽企业重金招聘Python工程师标准>>> 在JDK 7发布版本中, 可以在switch语句的表达式中使用String对象: public String getTypeO ...

  3. JAVA入门级教学之(switch语句)

    /*      关于switch语句(我称为匹配语句):         1.switch语句也属于选择结构,也是分支语句         2.switch语句的语法结构:             一 ...

  4. Java基础篇:嵌套 switch 语句

    可以将一个switch语句作为一个外部switch语句的语句序列的一部分,这称为嵌套switch语句.因为一个switch语句定义了自己的块,外部switch语句和内部switch语句的case常量不 ...

  5. Java入门 Day004 补充(switch语句 for循环)

    1.根据输入的值,判断当前季节(分别用if语句和switch语句实现 3,4,5 属于春季 6,7,8 属于夏季 9,10,11属于秋季 12,1,2属于冬季 (考虑非法数据) If语句: impor ...

  6. JAVA编写元音字母(Switch语句)

    package com.helloworld; import java.util.Scanner; public class HelloWorld { public static <ch> ...

  7. java用switch语句算,Java的switch语句与条件运算符

    文章导读 [前面学习了条件结构的if语句,可以解决多条件判断的情况.除了if语句外,Java语言还提供了switch语句和条件运算符用于简化条件判断语句的编写.本篇探讨Java的switch语句和条件 ...

  8. c语言switch scanf语句,c语言switch语句 谢谢·!~!~

    c语言switch语句 谢谢·!~!~以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言switch语句 谢谢·!~ ...

  9. java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

最新文章

  1. 记录PCLVisualizer问题
  2. 【React系列】状态(State)和生命周期
  3. CentOS 7 搭建docker仓库
  4. Docker - 实战TLS加密通讯
  5. Maximum sum(信息学奥赛一本通-T1305)
  6. finalshell连接超时怎么解决_vncviewer连接超时,vncviewer连接超时怎么解决
  7. php图片写入带问号_php-fpm Remote Code Execution 分析(CVE-2019-11043)
  8. 苹果推出Find My Friends好友追踪iOS应用
  9. python学到什么程度可以找到工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
  10. linux用openssl制作自签名数字证书
  11. 中文ISBN公开信息查询接口
  12. SpringCloud Hoxton——Bus服务消息总线
  13. (MATLAB)把视频读得明明白白
  14. 2019最新IDEA Java教学视频课程资料
  15. LWR--local weighted regression
  16. 通过Xcodeproj深入探究Xcode工程文件
  17. BJDCTF 2nd writeup(二)
  18. 用计算机套路别人,套路计算器隐藏版
  19. 包嗅探和包回放简介-tcpdump,tcpreplay
  20. vulhub复现之shiro反序列化漏洞复现

热门文章

  1. P2756,ssl2601-飞行员配对问题【网络流24题,最大匹配,dinic】
  2. Codeforces Round #671 (Div. 2)
  3. 【LCT】洞穴勘测(luogu 2147/金牌导航 LCT-1)
  4. 【递归】桐桐的递归函数
  5. 性能优化之抛弃Calendar
  6. Java编程:Java的反射机制中的 getComponentType() 方法
  7. Oracle入门(六)之用户操作
  8. 一张图搞清楚Java异常机制
  9. composer配置阿里云镜像
  10. 用数组存储字符C进行回文检测