Java14新特性-switch表达式

 java14对switch表达式进行了增强,下面我们来演示几种用法。

使用lambda方式

 使用lambda方式的箭头标签匹配时,箭头标签后面的语句后表达式会直接执行,不需要break关键字。以前写switch表达式时经常会漏写break,导致产生许多不可预测的问题,以后再也不会担心了。
 以下这个例子后面的语句会直接执行

   public static void main(String[] args) {
        printDigit(4);
    }

    private static void printDigit(int i){
        switch (i){
            case 1 -> System.out.println("one");
            case 2 -> System.out.println("tow");
            case 3 -> System.out.println("three");
            case 4,5,6 -> System.out.println("four,five or six");
            default -> System.out.println("big digit");
        }
    }
four,five or six

 以下的例子会返回后面的表达式。

 public static void main(String[] args) {
        System.out.println(getDigit(5));
    }

    private static String getDigit(int i){
        return switch (i){
            case 1 -> "one";
            case 2 -> "tow";
            case 3 -> "three";
            case 4,5,6 -> "four,five or six";
            default -> "big digit";
        };
    }
four,five or six

yield关键字

当使用lambda方式,箭头标签后是一个复杂的语句块时,可以需要使用yield进行返回。yieldreturn的区别是,return会跳出当前的方法,yield只会跳出当前的switch块。

public static void main(String[] args) {
        getDigit(5);
    }

    private static void getDigit(int i){
        String printDigit =  switch (i){
            case 1 -> "one";
            case 2 -> "tow";
            case 3 -> "three";
            case 4,5,6 -> {
                if (i % 2 ==0) {
                    yield "even";
                } else {
                    yield "odd";
                }
            }
            default -> "big digit";
        };
        System.out.println(printDigit);
    }
odd
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8 到 Java 17 的新增特性如下: Java 8 新增特性: - Lambda 表达式 - 方法引用和构造函数引用 - 接口默认方法和静态方法 - Stream API - 新的日期/时间 API - Nashorn JavaScript 引擎 Java 9 新增特性: - 模块化系统 - JShell REPL 工具 - 私有接口方法 - 集合工厂方法 - 改进的 Stream API Java 10 新增特性: - 局部变量类型推断 - G1 垃圾收集器的并行 Full GC Java 11 新增特性: - HTTP Client API - 支持 Unicode 10.0.0 - 基于 Java 9 的模块化系统的改进 - 支持 TLS 1.3 Java 12 新增特性: - Switch 表达式 - 新的字符串方法 - 改进的 Shenandoah 垃圾收集器 Java 13 新增特性: - Text Blocks - Switch 表达式增强 - 改进的 ZGC 垃圾收集器 Java 14 新增特性: - Switch 表达式进一步增强 - instanceof 模式匹配 - Records(预览功能) - 基于 OpenJDK 的移动版 Java 15 新增特性: - Sealed 类型(预览功能) - Records - Pattern 模式匹配(预览功能) - Text Blocks 增强 - 改进的 ZGC 垃圾收集器 Java 16 新增特性: - Records - instanceof 模式匹配增强 - 改进的垃圾收集器 - Vector API(预览功能) Java 17 新增特性: - Sealed 类型 - Pattern 模式匹配 - switch 表达式增强 - 基于 OpenJDK 的移动版增强 - 预期的 ZGC 并发垃圾收集 以上是 Java 8 到 Java 17 的新增特性。值得注意的是,某些特性是通过预览功能引入的,可能在未来的版本中发生变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值