JDK21新特性

简介: 介绍一些JDK21的新特性

JDK21前需这样写:

class Main {
    public static void main(String[] args) {
        String text = "Hello World!";
        System.out.printIn("%s".formatted(text));
    }
}

先创建一个类
然后写一个Main方法 并且需要public static修饰
接着在这个方法里声明一个字符串变量 然后使用占位符来输出这个字符串

用JDK21可以这样写:

void main() {
    String text = "Hello World!";
    System.out.printIn(STR. "\{ text }");

不用再创建一个类 也不用过多的修饰 也不用一个字符串数组参数 而且拼接字符串直接用一个大写的STR接着.字符串 里面就是一个\加上一个花括号 花括号里就是变量名
有点类似python的写法

再来看匹配record

record Point(int x, int y) {}

static void printSum(Object obj) {
    if (obj instanceof Point p) {
        int x = p.x();
        int y = p.y();
        System.out.printIn(x + y);
    }
}

在JDK21前需要先调用一下p 但在JDK21后

record Point(int x, int y) {}

static void printSum(Object obj) {
    if (obj instanceof Point(int x, int y)) {
        System.out.printIn(x + y);
    }
}

可以使用类似于JS的解构来获取record的属性

不仅是if 用switch也可以

record Point(int x, int y) {}

static void printSum(Object obj) {
    switch(obj) {
        case Point(int x, int y) -> System.out.printIn(x + y);
        case null, default -> {
            // Do nothing
        }
    }
}

最后看一下未命名变量

var map = Map.of("one", "1", "two", "2");
map.forEach((k, v) -> {
    System.out.printIn(k);
});

这里的forEach只使用了key

在JDK21前 必须把v也命名 这样会占用一个名称 而且IDEA也会提示这个变量未使用

但在JDK21后 就可以使用_来命名了(未命名变量)

var map = Map.of("one", "1", "two", "2");
map.forEach((k, _) -> {
    System.out.printIn(k);
});
目录
相关文章
|
2月前
|
容器
jdk8新特性-详情查看文档
jdk8新特性-详情查看文档
44 3
|
1月前
|
存储 安全 Java
JDK1.8 新的特性
JDK1.8 新的特性
19 0
|
2月前
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
3月前
|
Java API
JDK8到JDK25版本升级的新特性问题之使用Collectors.teeing()来计算一个列表中学生的平均分和总分如何操作
JDK8到JDK25版本升级的新特性问题之使用Collectors.teeing()来计算一个列表中学生的平均分和总分如何操作
|
3月前
|
Java API Apache
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
JDK8到JDK24版本升级的新特性问题之在Java中,HttpURLConnection有什么局限性,如何解决
|
3月前
|
Oracle Java 关系型数据库
JDK8到JDK29版本升级的新特性问题之未来JDK的升级是否会成为必然趋势,如何理解
JDK8到JDK29版本升级的新特性问题之未来JDK的升级是否会成为必然趋势,如何理解
|
3月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
3月前
|
Java API 开发者
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
121 0
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
|
2月前
|
Java 编译器 API
JDK8新特性--lambda表达式
JDK8的Lambda表达式是Java语言的一大进步。它为Java程序提供了更多的编程方式,让代码更加简洁,也让函数式编程的概念在Java中得到了体现。Lambda表达式与Java 8的其他新特性,如Stream API、新的日期时间API一起,极大地提高了Java编程的效率和乐趣。随着时间的流逝,Java开发者对这些特性的理解和应用将会越来越深入,进一步推动Java语言和应用程序的发展。
13 0
|
3月前
|
算法 Java iOS开发
JDK8到JDK27版本升级的新特性问题之JDK 17中G1在资源占用方面有何变化
JDK8到JDK27版本升级的新特性问题之JDK 17中G1在资源占用方面有何变化