面试反杀 | 请谈谈Java8-18引入的新特性(五)


theme: orange

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

Java8于2014年3月18日发布,截止到2022年4月6日,当前最新发行版本是Java18。版本17、11和8是目前支持的长期支持(LTS)版本。这篇文章带领大家回顾从Java 8 开始每个版本的特性,小板凳坐好,发车了!想看上一篇文章,点击这儿面试反杀 | 请谈谈Java8-18引入的新特性(四)

Java 14 新特性

Records

Records是一种受限制的类形式,对于 pojo 来说非常理想。标准的数据载体类将有一些私有字段以及构造函数和 getter/setter。

让我们使用Java 8 语法创建一个有两个成员的简单数据载体类的示例:

public class Location {    double x;    double y;    public Location(double x, double y) {    this.x = x;    this.y = y;   }    public double getX() {     return x;   }    public double getY() {     return y;   } }

我们可以使用下面给出的代码使用 Record 重写上面的类:

record NewLocation(double x, double y) {}

Record 将在运行时获取 getter 和构造函数,还将获取 equals ()、 hashcode ()和 toString ()方法。

Helpful Nullpointerexception

在此之前,NullPointerException 的堆栈跟踪没有太多内容可讲,除了给定文件中某一行的某个值为 null。

虽然这些信息很有用,但是它们只是建议调试一行代码,而不是仅仅通过查看日志供开发人员理解。

现在,Java 通过添加指出给定代码行中到底什么是 null 的功能,使得这一过程变得更加容易。

举个空指针的例子:

int[] arr = null; arr[0] = 1;

在以前的版本,运行这段代码时,日志会显示:

Exception in thread "main" java.lang.NullPointerException at com.baeldung.MyClass.main(MyClass.java:27)

但对于Java 14,日志会打印:

java.lang.NullPointerException: Cannot store to int array because "a" is null

正如我们可以看到的,现在我们准确地知道是哪个变量导致了异常。

Text Blocks

文本块相较于Java 13,又做了一次升级,现在有了两个新的转义序列,但仍然是预览功能。

  • \: 表示行尾,以便不引入新的行字符
  • \s: 表示一个单独的空格

举个例子:

String multiline = "A quick brown fox jumps over a lazy dog; the lazy dog howls loudly.";

现在可以写成:

String multiline = """    A quick brown fox jumps over a lazy dog; \    the lazy dog howls loudly.""";

这提高了字符串的可读性。

当然还有其它的新特性,包括但不限于:

  • Packaging Tool
  • Foreign Memory Access API
  • ZGC on Windows
  • NUMA-Aware Memory Allocation for G1
  • JFR Event Streaming

未完待续,下面继续讲各个版本的新特性,敬请期待!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值