从Java 9 到 Java 17 新特性梳理
2022/8/31 14:23:30
本文主要是介绍从Java 9 到 Java 17 新特性梳理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java 9
-
新的创建集合的方法
// [1, 2, 3, 4] List<Integer> integers = List.of(1, 2, 3, 4); // {1,2,3} Set<Integer> integerSet = Set.of(1, 2, 3); // {"hello":"world","hi":"java"} Map<String, String> hello = Map.of("hello", "world", "hi", "java");
-
Stream扩展:ofNullable、iterate、takeWhile、dropWhile、Optional扩展
-
try-with-resources 优化
-
接口私有方法
-
引入HttpClient
Java 1
-
局部变量类型推断 var
java 11
-
字符串强化:isBlank()、lines()、strip()、repeat(n)
-
集合转对应类型的数组
List<String> sampleList = Arrays.asList("felord.cn", "java 11"); // array = {"felord.cn", "java 11"}; String[] array = sampleList.toArray(String[]::new);
-
断言取反
Predicate.not()
-
文件中读写字符串内容更方便
String dir= "C://yourDir"; // 写入文件 Path path = Files.writeString(Files.createTempFile(dir, "hello", ".txt"), "hello java 11"); // 读取文件 String fileContent = Files.readString(path);
-
HttpClient支持HTTP2
java12
-
字符串缩进
String indent(int n):
当n>0时,会在字符串的每一行开头插入n个空格,字符串整体右移。当n<0时,会在字符串的每一行开头删除n个空格,如果实际的空格数小于n,删除该行所有空格,但是并不会换行。 -
字符串转换
<R> R transform(Function<? super String, ? extends R> f)
String txt = "hello "; // hello hello String s = txt.transform(str -> str.repeat(2));
-
基于内容的文件匹配
Files.mismatch(Path,Path)
// 文件对比 Path p1 = Files.createTempFile("file1", "txt"); Path p2 = Files.createTempFile("file2", "txt"); Files.writeString(p1, "felord.cn"); Files.writeString(p2, "felord.cn"); // -1L 二者内容相同 long mismatch = Files.mismatch(p1, p2);
-
Collectors::teeing
-
数字化格式类CompactNumberFormat
java 13
-
使用AppCDS的时候,就不在需要这么复杂了
-
ZGC 可以将未使用的堆内存返回给操作系统
-
Switch 表达式 (Preview)
int i; switch (x) { case "1": i=1; break; case "2": i=2; break; default: i = x.length(); break; }
int i = switch (x) { case "1" -> 1; case "2" -> 2; default -> { int len = args[1].length(); yield len; } };
-
文本块
String query = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = 'INDIANAPOLIS' ORDER BY `EMP_ID`, `LAST_NAME`; """;
java 14
-
instanceof模式匹配
//在Java14之前,我们通常的写法如下: Object obj = "程序新视界"; if(obj instanceof String){ String str = (String) obj; System.out.println("关注公众号:" + str); } //通过java14的新特性,我们可以简化成如下方式: Object obj = "程序新视界"; if(obj instanceof String str){ System.out.println("关注公众号:" + str); }
-
Switch表达式 转正
-
记录类型(Record Type)的引入
//定义一个Record类型如下: public record Point(int x, int y) { } //使用Record操作如下: Point point = new Point(1,3); System.out.println(point.x()); System.out.println(point.y());
java16
-
矢量计算
-
Record类型在JDK14作为preview,在JDK15处于第二轮preview,在JDK16转正
-
instanceof的模式匹配在JDK14作为preview,在JDK15作为第二轮的preview,在JDK16转正
-
jpackage在JDK14引入,JDK15作为incubating工具,在JDK16转正,从jdk.incubator.jpackage转为jdk.jpackage。它支持Linux: deb and rpm、macOS: pkg and dmg、Windows: msi and exe
java17
-
密封类(接口)(Sealed、permits 修饰符)
总结:java9到java17,常用新特性
-
创建集合新的方法--9
-
try-with-resources--9
-
引入HttpClient--9
-
字符串强化--11
-
集合转对应类型的数组--11
-
Switch 表达式--13-14
-
模式匹配--14-14
-
文本块--13-14
-
记录类型(Record Type)--14-16
这篇关于从Java 9 到 Java 17 新特性梳理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-0601-电商商品中心解密:仅凭SKU真的足够吗?
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能