1、为什么用jdk17,对比常用jdk8有哪些升级?
-
ZGC垃圾回收器,性能提升
-
可以使用 var 作为局部变量类型推断标识符
var value = new MyObject();
- switch 使用起来更加简洁,可以不用再break了。
Object obj = "test";
switch (obj) {
case String s && s.length() > 0 -> s;
default -> "";
}
将冒号(:)替换为箭头(->),并且switch表达式默认不会失败,所以不需要break。
-
instanceof 增强
-
增加不可修改的数据类 record Records的目标是扩展Java语言语法,Records为声明类提供了一种紧凑的语法,用于创建一种类中是“字段,只是字段,除了字段什么都没有”的类。
通过对类做这样的声明,编译器可以通过自动创建所有方法并让所有字段参与hashCode()等方法。
record Person (String firstName, String lastName) {}
record 解决了使用类作为数据包装器的一个常见问题。纯数据类从几行代码显著地简化为一行代码。
- Text Blocks文本块
在Java17之前的版本里,如果我们需要定义一个字符串,比如一个JSON数据,基本都是如下方式定义:
public void lowVersion() {
String text = "{\n" +
" \"name\": \"Hello Java\",\n" +
" \"age\": 18,\n" +
" \"address\": \"天津滨海新区\"\n" +
"}";
System.out.println(text);
}
2、搭建项目
2.1 IDEA中可以直接下载安装jdk17