Java 12 发布,支持Switch表达式
Java 12是最新的6个月发布一次的Java,它支持Switch表达式并包含Shenandoah低暂停垃圾收集器。
从switch表达式开始,新版本有八个主要改进。这仍然是一个预览功能,它扩展了switch语句,因此可以将其用作语句或表达式。无论使用哪种形式,都可以使用传统的或简化的范围和控制流行为。
Oracle表示,除了简化日常编程之外,这个添加还为switch语句中使用模式匹配铺平了道路。模式匹配是另一个预览语言特性。
目前,switch块的默认控制流是fall through,因此需要一个break语句来避免正在测试和可能执行的块中的其余Case语句。新的switch表达式引入了一种新形式的switch标签,编写为 "case L ->",表示只有在标签匹配时才执行标签右侧的代码。例如:
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
新版本的下一个改进是当前的垃圾收集器。从现在开始,垃圾收集器将在空闲时自动将Java堆内存返回给操作系统,而不是等到完全垃圾收集以将内存返回给操作系统,而且它还将更好地考虑暂停时间。
到目前为止,垃圾收集器有时启动的工作量要比暂停目标花费的时间长,这意味着任务已经超时。在改进版本下,如果发生这种情况,垃圾收集器将降低其目标。
在垃圾收集方面,Shenandoah已经添加到一个实验性版本中。Shenandoah是Java新的低暂停时间垃圾收集器算法。它通过与正在运行的Java线程并发地执行回收工作来减少GC暂停时间。Shenandoah的暂停时间与堆大小无关,这意味着无论堆大小是200mb还是200gb,您都将拥有相同的一致暂停时间。
另一个改进是在JDK源代码中添加了一套基本的微基准测试,同时使开发人员可以轻松地运行现有的微基准测试并创建新的微基准测试。还有一个新的JVM常量API,可用于对关键类文件和运行时构件的名义描述建模。
OpenJDK开源版本现在已经发布,同时还有商业许可版本。JDK 12将至少收到两次更新,之后将推出Oracle JDK 13,该版本将于2019年9月发布。
更多的信息
如何在Ubuntu 18.04/16.04中安装Oracle Java 12 https://www.linuxidc.com/Linux/2019-03/157763.htm
- java的switch表达式支持的类型
- JAVA switch 支持string 表达式的原理
- maven 编译报错 java: -source 1.5 中不支持switch 中存在字符串
- Java的switch是否支持String作为参数,还支持哪些类型?
- java switch支持的数据类型
- Java-switch表达式中巧用String类型达到分支目的
- IDEA无法编译java8的lambda表达式提示Error:(16, 48) java: -source 1.5 中不支持 lambda 表达式
- Java - 表达式语言(EL)支持哪些运算符?
- 【17年新版】PDF文档的Java库jPDFPrint V2017R1发布 | 新增4K高分辨率显示支持
- JAVA | 37 - 正则表达式 | String 类对正则的支持
- java中提供了对正则表达式的支持。 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码。 注意:只填写缺少代码,不要
- 谷歌发布 App Engine 1.7.3,支持 Java 7
- Java 12 将于3月19日发布,8 个最终 JEP 一览
- java基础:java switch(表达式)中表达式的类型都可以是哪些类型?
- java web 部署发布 --2013,12,29--binbinyang
- Java对正则表达式的支持
- [疯狂Java]正则表达式:Pattern、Matcher、String对正则表达式的支持
- Java Switch支持的类型问题
- java中的switch语句 和 常量表达式
- 在AndroidStudio中设置某项目支持使用Java 8 新特性 ( eg:Lambda 表达式)