尝鲜Java 12新特性:switch表达式】的更多相关文章

Java 12将在两个月后(2019/3/19)发布,现已进入RDP1阶段,确定加入8个JEP.其中对Java语法的改进是JEP 325: switch表达式.于是我迫不及待,提前感受一下更先进的语言特性. 因为12没有正式发布,本文使用自己编译的OpenJDK.嫌麻烦的话,也可以直接使用官方的ea版本.JEP325是预览(preview)特性,编译运行时需要添加--enable-preview参数. 顾名思义,这个feature是对switch动手脚的.包括两个方面. 1. 简化fall-th…
Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Java 11 新特性介绍 Java 10 新特性介绍 Java 09 新特性介绍 Java 8 新特性 - Stream 介绍 Java 8 新特性 - Lambda 表达式介绍 Java 8 新特性 - 新的时间处理方式 Java 8 新特性 - 使用Optional处理空指针 Java 7 新特性介绍 Java 7 新特性…
本文内容 引入 测试数据 collect(toList()) map filter flatMap max 和 min reduce 整合操作 参考资料 Java 8 对核心类库的改进主要包括集合类的 API 和新引入的流(Stream).流使得程序员得以站在更高的抽象层次上对集合进行操作. 本文主要介绍 java.util.stream 中 Lambdas 表达式的使用. 下载 Demo 引入 假设有个艺术家的列表集合,后面会给出定义(艺术家包含名字,歌曲,国籍等属性),在此先借用一下.若计算…
Lambda表达式 vs 匿名类既然lambda表达式即将正式取代Java代码中的匿名内部类,那么有必要对二者做一个比较分析.一个关键的不同点就是关键字 this.匿名类的 this 关键字指向匿名类,而lambda表达式的 this 关键字指向包围lambda表达式的类.另一个不同点是二者的编译方式.Java编译器将lambda表达式编译成类的私有方法.使用了Java 7的 invokedynamic 字节码指令来动态绑定这个方法. 若对参数有任何修改,则不能使用方法引用,而需键入完整地lam…
传统switch表达式的弊端: 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行: 所有的case语句共用一个块范围,在不同的case语句定义的变量名不能重复: 不能在一个case里写多个执行结果一致的条件: 整个switch不能作为表达式返回值: java 12 switch新特性: 使用 Java 12 中 Switch 表达式的写法,省去了 break 语句,避免了因少写 break 而出错. 同时将多个 case 合并到一行,显得简洁.清晰也更加优雅的表达…
Java 12 已如期于 3 月 19 日正式发布,此次更新是 Java 11 这一长期支持版本发布之后的一次常规更新,截至目前,Java 半年为发布周期,并且不会跳票承诺的发布模式,已经成功运行一年多了.通过这样的方式,Java 开发团队能够将一些重要特性尽早的合并到 Java Release 版本中,以便快速得到开发者的反馈,避免出现类似 Java 9 发布时的两次延期的情况. 1 Switch 表达式 Java 12 早在 2018 年 12 月便进入了 Rampdown Phase On…
0. 基础要求 了解常见的 ES6 新特性 ES6 的导入导出语法 解构赋值 箭头函数 etc... 了解 vue 2.x 的基本使用 组件 常用的指令 生命周期函数 computed.watch.ref 等 1. 相关资源 [知乎 - Vue Function-based API RFC]https://zhuanlan.zhihu.com/p/68477600 [github - vuejs/composition-api]https://github.com/vuejs/compositi…
lambda表达式作为方法的返回值:…
支持在Java application执行之后进行动态archive.存档类将包括默认的基础层CDS存档中不存在的所有已加载的应用程序和库类.也就是说,在Java 13中再使用AppCDS的时候,就不再需要这么复杂了. 该提案处于目标阶段,旨在提高AppCDS的可用性,并消除用户进行试运行以创建每个应用程序的类列表的需要. 使用示例: # JVM退出时动态创建共享归档文件:导出jsa java -XX:ArchiveClassesAtExit=hello.jsa -cp hello.jar He…
引入了yield语句,用于返回值: 和return的区别在于:return会直接跳出当前循环或者方法,而yield只会跳出当前switch块. @Test public void testSwitch2(){ String x = "3"; int i = switch (x) { case "1" -> 1; case "2" -> 2; default -> { yield 3; } }; System.out.printl…