Java 14 强势登场:Switch 表达式的进化之路

简介: Java 14 强势登场:Switch 表达式的进化之路

Java 14 引入了一项重要的语言特性,即增强的 Switch 表达式。在此之前,Switch 语句主要用于多分支条件的控制流,而 Switch 表达式则是一种更为简洁和灵活的语法形式。

基本语法

传统的 Switch 语句:

int dayOfWeek = 3;
String dayType;
switch (dayOfWeek) {
    case 1:
        dayType = "Weekday";
        break;
    case 2:
    case 3:
    case 4:
    case 5:
        dayType = "Weekday";
        break;
    case 6:
    case 7:
        dayType = "Weekend";
        break;
    default:
        dayType = "Invalid day";
}

Switch 表达式的新语法:

int dayOfWeek = 3;
String dayType = switch (dayOfWeek) {
    case 1, 2, 3, 4, 5 -> "Weekday";
    case 6, 7 -> "Weekend";
    default -> "Invalid day";
};

特性和语法要点

  1. 箭头运算符 (->): Switch 表达式使用箭头运算符,使得语法更为简洁,不再需要显式的 break 语句。
  2. 多标签匹配: 可以在一个 case 标签下匹配多个值,使用逗号 , 隔开。
  3. 返回值: Switch 表达式具有返回值,可以将结果直接赋给变量。
  4. 新的 Default 分支语法:使用 default -> 代替传统的 default:。
  5. Switch 表达式作为语句和作为表达式: Switch 表达式可以作为语句(没有返回值)或作为表达式(有返回值)。上面的例子中展示的是作为表达式的用法。

使用场景

Switch 表达式在编写更简洁、易读的代码时非常有用。它特别适合在多个分支中需要返回值的情况下,可以避免冗长的 if-else 结构。

需要注意的是,Switch 表达式并不是完全取代传统的 Switch 语句,而是在一些情况下提供了更为紧凑和清晰的语法形式。

小提示:JEP 361 特性经过 JDK 12 和 JDK 13 两个预览版本的历练,最终在 JDK 14 中定稿。因此,虽然部分功能在 JDK 12 和 JDK 13 中也可见,但真正推荐的使用环境还是 JDK 14 及其之后的版本。

相关文章
|
3天前
|
Java 开发者
Java一分钟之-Lambda表达式与函数式接口
【5月更文挑战第12天】Java 8引入的Lambda表达式简化了函数式编程,与函数式接口结合,实现了代码高效编写。本文介绍了Lambda的基本语法,如参数列表、箭头符号和函数体,并展示了如何使用Lambda实现`Runnable`接口。函数式接口仅有一个抽象方法,可与Lambda搭配使用。`@FunctionalInterface`注解用于确保接口具有单一抽象方法。文章还讨论了常见的问题和易错点,如非函数式接口、类型冲突以及Lambda表达式的局部变量可见性,并提供了避免这些问题的策略。通过理解Lambda和函数式接口,开发者能提高代码可读性和效率。
42 4
|
3天前
|
Java
探索Java世界的奇妙工具——运算符与表达式运算符
探索Java世界的奇妙工具——运算符与表达式运算符
8 0
|
1天前
|
Java API
Java 8新特性之Lambda表达式与Stream API
【5月更文挑战第17天】本文将介绍Java 8中的两个重要特性:Lambda表达式和Stream API。Lambda表达式是一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁。Stream API是一种用于处理集合的新工具,它提供了一种高效且易于使用的方式来处理数据。通过结合使用这两个特性,我们可以编写出更加简洁、高效的Java代码。
7 0
|
3天前
|
Java API
Java 8新特性之Lambda表达式与Stream API实践指南
【5月更文挑战第15天】 随着Java语言的不断发展,Java 8作为一个重要的版本,引入了许多令人兴奋的新特性。其中,Lambda表达式和Stream API是Java 8最受关注的两个特性。本文将深入探讨Lambda表达式的基本概念、语法和使用场景,以及如何结合Stream API实现更加简洁、高效的代码编写。通过实例演示,帮助读者快速掌握这两个新特性,提高Java编程能力。
|
3天前
|
Java
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
16 3
|
3天前
|
Java API 开发者
Java中Lambda表达式的深入理解与应用
【5月更文挑战第12天】在Java 8之后,Lambda表达式已经成为了Java开发者必备的技能之一。Lambda表达式以其简洁、灵活的特点,大大提高了编程的效率。本文将深入探讨Lambda表达式的基本概念,语法规则,以及在实际开发中的应用,帮助读者更好地理解和使用Lambda表达式。
|
3天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的深度解析
【5月更文挑战第12天】本文将深入探讨Java 8中的两个重要新特性:Lambda表达式和Stream API。我们将从基本概念入手,逐步深入到实际应用场景,帮助读者更好地理解和掌握这两个新特性,提高Java编程效率。
42 2
|
3天前
|
算法 安全 Java
Java表达式和规则引擎的比较与考量
Java表达式和规则引擎的比较与考量
11 0
|
3天前
|
Java
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
|
3天前
|
Java 测试技术
Java一分钟之-控制流程:if条件语句与switch
【5月更文挑战第8天】本文探讨了Java编程中的`if`和`switch`控制流程语句,强调了常见问题和易错点。对于`if`语句,需注意使用大括号避免逻辑错误,完整比较操作,以及理解`&&`和`||`的短路行为。在`switch`语句中,要注意只能基于常量进行判断,每个`case`后应有`break`,并提供`default`分支。避免错误的策略包括始终使用大括号、确保清晰的条件、进行代码审查和编写单元测试。掌握这些要点对编写高效、可维护的代码至关重要。
19 0
Java一分钟之-控制流程:if条件语句与switch