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;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

recycleView(三)动态修改背景色

效果图 1.关键代码 1. // 定义一个变量来记录滑动的距离var scrollDistance 0// 在RecycleView的滑动监听器中更新滑动的距离binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {override fun onScrolled(recyclerView: RecyclerView, …

PCB知识补充

系列文章目录 文章目录 系列文章目录参考文献PCB知识互连线电阻过孔/铜箔电流能力铜箔载流能力过孔载流能力 热设计电磁兼容及部分要求 参考文献 [1]牛森,张敏娟,银子燕.高速PCB多板互联的电源完整性分析[J].单片机与嵌入式系统应用,2023,23(09). [2]陈之秀,刘洋,张涵舒等.高…

通用结构化剪枝DepGraph

文章目录 0. 前言一. 第一部分: Torch-Pruning1.1 传统的剪枝流程 - ResNet-18结构化剪枝1.2 Torch-Pruning剪枝 - ResNet-18结构化剪枝1.3 Torch-Pruning剪枝 - 遍历所有分组1.4 Torch-Pruning剪枝 - 剪枝器 High-level Pruners1.5 Torch-Pruning剪枝 - 拓展到更复杂的神经网…

【递归】求根节点到叶节点数字之和(Java版)

目录 1.题目解析 2.讲解算法原理 3.代码 1.题目解析 LCR 049. 求根节点到叶节点数字之和 给定一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点…

No179.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

开发者测试2023省赛--UnrolledLinkedList测试用例

测试结果 官方提交结果 EclEmma PITest 被测文件UnrolledLinkedList.java /** This source code is placed in the public domain. This means you can use it* without any restrictions.*/package net.mooctest;import java.util.AbstractList; import java.util.Collectio…

牛客网刷题笔记231112 最小k位数+二叉树层序遍历+SQL异常邮件概率

算法题牛客网NC119 最小的k个数 题目: 用了一下python列表的便利,不知道在面试时允许用不。当然最简单的方法其实是直接sort()一下取前k位数即可。本次写的思路如下: 用一个最大容量为k的列表存储结果,遍历n个元素,当…

Python基础入门例程52-NP52 累加数与平均值(循环语句)

最近的博文: Python基础入门例程51-NP51 列表的最大与最小(循环语句)-CSDN博客 Python基础入门例程50-NP50 程序员节(循环语句)-CSDN博客 Python基础入门例程49-NP49 字符列表的长度-CSDN博客 目录 最近的博文: 描述 输入描…

(离散数学)命题及命题的真值

答案: (5)不是命题,因为真值不止一个 (6)不是命题,因为不是陈述句 (7)不是命题,因为不是陈述句 (8)不是命题,真值不唯一

Reeds-Shepp曲线

汽车都有一个最小转向半径,Reeds-Shepp曲线由几段半径固定的圆弧和一段直线段拼接组成,而且圆弧的半径就是汽车的最小转向半径。从起始点到目标点的路径长度是指汽车中心运动轨迹的长度,也就是所有圆弧的弧长和直线段的长度之和。 当环境中…

顺序查找和折半查找

顺序查找的算法思想 顺序查找,又叫“线性查找”,通常用于线性表 算法思想:从头到脚挨个找 顺序查找的实现 typedef struct{ //查找表的数据结构(顺序表)ElemType *elem; //动态数组基址int TableLen; //表的长度 }S…

华为ensp:rip宣告

ip全部配置好 R1 进入r1视图模式 rip network 192.168.1.0 network 1.0.0.0 R2 进入r2视图模式 rip network 192.168.2.0 network 1.0.0.0 这样就完成了宣告 display ip routing-table 查看路由表

Leetcode—191.位1的个数【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—191.位1的个数 实现代码 int hammingWeight(uint32_t n) {int ans 0;for(int i 0; i < 32; i) {if(n & ((long long)1 << i)) {ans;}}return ans; }运行结果 翻转比特1思路 就解法一的代码实现来说&am…

零基础学习Matlab,适合入门级新手,了解Matlab

一、认识Matlab Matlab安装请参见博客 安装步骤 1.界面 2.清空环境变量及命令 &#xff08;1&#xff09;clear all &#xff1a;清除Workspace中的所有变量 &#xff08;2&#xff09;clc&#xff1a;清除Command Window中的所有命令 二、Matlab基础 1.变量命名规则 &a…

Django的ORM操作

文章目录 1.ORM操作1.1 表结构1.1.1 常见字段和参数1.1.2 表关系 2.ORM2.1 基本操作2.2 连接数据库2.3 基础增删改查2.3.1 增加2.3.2 查找2.3.4 删除2.3.4 修改 1.ORM操作 orm&#xff0c;关系对象映射&#xff0c;本质翻译的。 1.1 表结构 实现&#xff1a;创建表、修改表、…

深度学习之基于Pytorch框架的MNIST手写数字识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 MNIST是一个手写数字识别的数据集&#xff0c;是深度学习中最常用的数据集之一。基于Pytorch框架的MNIST手写数字识…

k8s-实验部署 1

1、k8s集群部署 更改所有主机名称和解析 开启四台实验主机&#xff0c;k8s1 仓库&#xff1b;k8s2 集群控制节点&#xff1b; k8s3 和k8s4集群工作节点&#xff1b; 集群环境初始化 使用k8s1作为仓库&#xff0c;将所有的镜像都保存在本地&#xff0c;不要将集群从外部走 仓库…

Mac Qt 5.13.2无法加载文件

在Mac OS 14.0系统上&#xff0c;离线安装了Qt5.13.2&#xff0c;但是新建一个工程&#xff0c;却无法正常使用&#xff0c;只能加载出pro文件&#xff0c;其他文件都加载不出来&#xff0c;提示错误&#xff1a;Project ERROR: failed to parse default search paths from com…

uniapp——项目day03

商品列表 分支创建 定义请求参数对象 获取商品列表数据 渲染商品列表结构 1. 在页面中&#xff0c;通过 v-for 指令&#xff0c;循环渲染出商品的 UI 结构&#xff1a; <template><view><view class"goods-list"><block v-for"(goods,…

【Proteus仿真】【51单片机】多路温度控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、DS18B20温度传感器、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;默认LCD1602显示前4路采集的温…