Java13新增特性

前言

前面的文章,我们对Java9、Java10、Java11、Java12 的特性进行了介绍,对应的文章如下

Java9新增特性

Java10新增特性

Java11新增特性

Java12新增特性

今天我们来一起看一下Java13这个版本的一些重要信息

版本介绍

Java 13 是在 2019 年 9 月 17 日正式发布的。这个版本中引入了几个重要的新特性,包括文本块、扩展应用程序类-数据共享(Dynamic CDS Archives)、增强 ZGC 以将未使用的堆内存返回给操作系统(ZGC: Uncommit Unused Memory)、以及可在生产环境中使用的 switch 表达式(Switch Expressions)。
总的来说,Java 13 的这些新特性使得 Java 语言在处理大型应用程序和复杂任务时更加高效和灵活。

特性列表

  • 文本块(Text Blocks) :这是 Java 13 中引入的一个新特性,允许在 Java 语言中添加多行字符串文字,不需要进行任何转义。这个新特性解决了多行文本的问题,以三重双引号开头,并以同样的以三重双引号结尾终止,它们之间的任何内容都被解释为字符串的一部分,包括换行符,避免了对大多数转义序列的需要。这种方式可以更直观地表示字符串,支持跨越多行,且不会出现转义的视觉混乱,可以广泛提高 Java 类程序的可读性和可写性。

  • 扩展应用程序类-动态 CDS 归档(Dynamic CDS Archives) :这个特性允许在 Java 应用程序执行结束时动态归档类,归档类将包括默认的基础层 CDS(class data-sharing)存档中不存在的所有已加载的应用程序类和库类。

  • 增强 ZGC(Z Garbage Collector) 以将未使用的堆内存返回给操作系统(ZGC: Uncommit Unused Memory) :这个特性增强了 ZGC(Z Garbage Collector),使其能够将未使用的堆内存返回给操作系统。这个改进可以帮助减少内存占用和提高系统性能。

  • 可在生产环境中使用的 switch 表达式(Switch Expressions) :这个特性在 switch 块中引入了 yield 语句,用于返回值。使得在 switch 块中能够返回值。这个新特性可以在生产环境中使用,提高了代码的可读性和可维护性。

  • 支持 Unicode 12.1 :Java 13 默认支持 Unicode 12.1 版本,包括新的表情符号字符。

  • java.net.Socket 和 java.net.ServerSocket API 的重新实现 :Java 13 对 java.net.Socket 和 java.net.ServerSocket API 进行了重新实现,以提高网络通信的性能和可靠性。

代码示例

以下是 Java 13 中一些新特性的代码示例:

文本块(Text Blocks):

String text = """这是一段多行文本,可以轻松地表示长文本内容,无需使用转义字符。""";
System.out.println(text);

ZGC(Z Garbage Collector)的增强:

Switch 表达式:


int value = 2;
switch (value) {case 1:System.out.println("value is 1");break;case 2:System.out.println("value is 2");break;default:System.out.println("value is not 1 or 2");break;
}

新的switch表达式


int value = 2;
switch (value) {case 1 -> System.out.println("value is 1"); // 使用箭头符号表示简单表达式和代码块case 2 -> System.out.println("value is 2"); // 使用箭头符号表示简单表达式和代码块default -> System.out.println("value is not 1 or 2"); // 使用箭头符号表示简单表达式和代码块
}

这些代码示例展示了 Java 13 中的一些新特性,包括文本块、ZGC 的增强以及 switch 表达式的使用。你可以在 Java 开发环境中尝试这些示例,以更好地理解这些新特性的用法和效果。

总结

Java 13 并非长期支持(LTS)版本,所以并不建议用于生产环境。
如果正在使用 Java 8(LTS)或 Java 11(LTS),暂时没有必要升级到 Java 13。
虽然 Java 13 中引入了一些新特性和改进,但这些新特性仍处于预览阶段,可能并不适合在生产环境中使用。此外,如果升级到 Java 13,可能会遇到一些未知的问题或稳定性问题,因此建议在生产环境中使用经过验证的 LTS 版本,以确保应用程序的稳定性和可靠性。
总之,在决定是否将 Java 13 用于生产环境之前,建议仔细评估生产环境的实际需求和要求,并确保了解新版本中引入的特性和改进的潜在影响和风险。

拓展

switch代码块中的yield关键字从java14开始才能用

Java 13 中的 switch 表达式示例确实没有使用 yield 语句。在 Java 13 中,引入了 switch 表达式作为语法糖,但并没有加入 yield 关键字。switch 表达式允许在一个 switch 语句中返回一个值,但仍然需要使用 break 语句来跳出每个 case 分支。
如果你希望在 switch 表达式中使用 yield 语句,那么你可能需要升级到 Java 14 或更高版本。在 Java 14 中,引入了 switch 表达式的新特性,其中包括支持 yield 语句。使用 yield 语句可以在 switch 表达式中返回一个值,而不需要显式地使用 break 语句。
以下是一个 Java 14 中 switch 表达式的示例,其中使用了 yield 语句:

int value = 2;
switch (value) {case 1:System.out.println("value is 1");yield; // 在这里使用 yield 语句来返回值break;case 2:System.out.println("value is 2");yield; // 在这里使用 yield 语句来返回值break;default:System.out.println("value is not 1 or 2");yield; // 在这里使用 yield 语句来返回值break;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/170074.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM框架Demo: 简朴博客系统

文章目录 1. 前端页面效果2. 项目创建3. 前期配置3.1. 创建数据库数据表3.2. 配置文件 4. 创建实体类5. 统一处理5.1. 统一返回格式处理5.2. 统一异常处理 6. 全局变量7. Session工具类8. 登录拦截器9. 密码加盐加密10. 线程池组件11. dao层11.1. UserMapper11.2. ArticleMappe…

【Linux】八、进程通信

进程通信的介绍 目的 数据传输:一个进程将它的数据发送给另一个进程; 资源共享:多个进程间共享资源; 通知事件:一个进程向另一个或一组进程发送消息,同时事件如,进程终止时要通知父进程&#xf…

结构型设计模式07-享元模式

结构型设计模式07-享元模式 1、享元模式介绍 享元模式是一种结构型设计模式,旨在通过共享对象来减少内存使用和提高性能。它主要用于处理大量细粒度对象的情况,其中许多对象具有相似的属性和行为。 在享元模式中,对象分为两种类型&#xf…

02MyBatisPlus条件构造器,自定义SQL,Service接口

一、条件构造器 1.MyBatis支持各种复杂的where条件,满足开发的需求 Wrapper是条件构造器,构建复杂的where查询 AbstractWrapper有构造where条件的所有方法,QueryWrapper继承后并有自己的select指定查询字段。UpdateWrapper有指定更新的字段的…

量子计算和量子通信技术:引领潜力无限的未来

近年来,随着量子计算和量子通信技术的迅速发展,它们在各个领域的广泛应用前景引起了人们的极大兴趣。本文将深入探讨量子计算和量子通信技术的普遍应用,以及它们预示的未来,同时提出业内人士需要注意的事项。 介绍:量子…

SpringData、SparkStreaming和Flink集成Elasticsearch

本文代码链接:https://download.csdn.net/download/shangjg03/88522188 1 Spring Data框架集成 1.1 Spring Data框架介绍 Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快…

【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV2)模型算法详解

【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV2)模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 GoogLeNet(InceptionV2)模型算法详解前言GoogLeNet(InceptionV2)讲解Batch Normalization公式InceptionV2结构InceptionV2特殊结构GoogLeNet(I…

pyTorch Hub 系列#4:PGAN — GAN 模型

一、主题描述 2014 年生成对抗网络的诞生及其对任意数据分布进行有效建模的能力席卷了计算机视觉界。两人范例的简单性和推理时令人惊讶的快速样本生成是使 GAN 成为现实世界中实际应用的理想选择的两个主要因素。 然而,在它们出现后的很长一段时间内,GA…

Django ModelSerializer 实现自定义验证详解

随着 Web 开发的日益复杂化,对数据验证的需求也日益增加。Django REST framework 提供了一套强大的、灵活的验证系统,帮助开发者轻松处理各种复杂情况。本文将重点探讨 Django ModelSerializer 中如何实现自定义验证。 1. 简介 Django ModelSerializer…

供暖系统如何实现数据远程采集?贝锐蒲公英高效实现智慧运维

山西某企业专注于暖通领域,坚持为城市集中供热行业和楼宇中央空调行业提供全面、专业的“智慧冷暖”解决方案。基于我国供热行业的管理现状,企业成功研发并推出了可将能源供应、管理与信息化、自动化相融合的ICS-DH供热节能管理系统。 但是,由…

菜单栏管理软件 Bartender 3 mac中文版功能介绍

​Bartender 3 mac是一款菜单栏管理软件,该软件可以将指定的程序图标隐藏起来,需要时呼出即可。 Bartender 3 mac功能介绍 Bartender 3完全支持macOS Sierra和High Sierra。 更新了macOS High Sierra的用户界面 酒吧现在显示在菜单栏中,使其…

Count-based exploration with neural density models论文笔记

Count-based exploration with neural density models[J]. International Conference on Machine Learning,International Conference on Machine Learning, 2017. 基于计数的神经密度模型探索 0、问题 这篇文章的关键在于弄懂pseudo-count的概念,以及是如何运用…