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

- 日理万妓 2023-02-25 03:57 192阅读 0赞

java switch语句

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

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

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

  1. DayOfWeek day = ... float expectedWorkingTime; switch (day) {
  2. case MONDAY:
  3. case TUESDAY:
  4. case WEDNESDAY:
  5. case THURSDAY:
  6. expectedWorkingTime = 8f;
  7. break ;
  8. case FRIDAY:
  9. expectedWorkingTime = 6f;
  10. break ;
  11. default :
  12. expectedWorkingTime = 0f; }

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

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

因此,新功能:

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

新的收益声明

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

例如:

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

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

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

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

java switch语句

发表评论

表情:
评论列表 (有 0 条评论,192人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java编程——switch语句

    switch关键字的中文意思是开关、转换的意思,switch语句在条件语句中特别适合做一组变量相等的判断,在结构上比if语句要清晰很多。 switch语句的语法格式为: s