从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 新特性梳理的更多相关文章
- Java 17 新特性:switch的模式匹配(Preview)
还记得Java 16中的instanceof增强吗? 通过下面这个例子再回忆一下: Map<String, Object> data = new HashMap<>(); da ...
- Java 各个版本中的新特性
新特性你知道多少? Java 8 Lambda 表达式 接口增加默认方法等 方法引用 流 Stream Java 9 模块系统 交互式工具jshell .of() 创建不可变集合 接口支持私有方法 更 ...
- Java高新技术 JDK1.5之新特性
Java高新技术 JDK1.5的新特性 知识概要: (1)静态导入 (2)可变参数 (3)增强for循环 (4)基本数据类型的自动拆箱和装箱 静态导入 ...
- Java9发布回顾Java 8的十大新特性
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...
- Java学习:JDK8的新特性
Java学习:JDK8的新特性 一.十大特性 Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式联合使用 引入重复注解 类型注解 最新的 ...
- c++17 新特性
编译环境说明:gcc 8.1 + eclipse +windows 10 eclipse cpp默认支持c++14,做c++17开发时,需要手动进行配置. 1.关键字 1)constexpr c++1 ...
- Java Development Kit(JDK) 8 新特性(简述)
一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法. 示例如下: interface Formula { calcul ...
- Java 14 可能带来什么新特性?
JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多. 文本块特性与常见的 Python "" ...
- Java 13 即将发布,新特性必须抢先看!
作者:h4cd 本文转载自开源中国(ID:oschina2013) 由于 Java 现在采取"半年发布一次新版本"的模式,所以 Java 12 的下一个版本 Java 13/JDK ...
随机推荐
- nw.js的cookie操作
在实战中,我遇到nw.js cookie一个奇怪的现象. 当我写入cookie(非httponly)后,关闭nw.js.然后再打开nw.js发现cookie没有写入成功.经过摸索,发现 nw.js的c ...
- Tapdata x 轻流,为用户打造实时接入轻流的数据高速通道
在全行业加速布局数字化的当口,如何善用工具,也是为转型升级添薪助力的关键一步. 那么当轻量的异构数据实时同步工具,遇上轻量的数字化管理工具,将会收获什么样的新体验?此番 Tapdata 与轻流 ...
- 今天介绍一下自己的开源项目,一款以spring cloud alibaba为核心的微服务架构项目,为给企业与个人提供一个零开发基础的微服务架构。
LaoCat-Spring-Cloud-Scaffold 一款以spring cloud alibab 为核心的微服务框架,主要目标为了提升自己的相关技术,也为了给企业与个人提供一个零开发基础的微服务 ...
- docker快速安装openvas
项目地址 1.更换国内docker源 2.docker run -d -p 443:443 -e PUBLIC_HOSTNAME=此处填你宿主机IP --name openvas mikesplain ...
- idea 生成方法注释
/* * * @description: * @author: xuetong.yang * @date: $date$ $time$ $params$ * @return: $return$ */ ...
- npm相关资料
npm 源的配置 命令行模式 npm install XXX --registry https://registry.npmmirror.com/ 项目模式 在项目更目录新建.npmrc 文件,内容 ...
- MongoDB慢查询与索引
MongoDB慢查询 慢查询分析 开启内置的慢查询分析器 db.setProfilingLevel(n,m),n的取值可选0,1,2 0:表示不记录 1:表示记录慢速操作,如果值为1,m需要传慢查询的 ...
- ApiDay001 __02 Java_StringBuilder
Java 核心API StringBuilder String 类型的连接性能不好,Java提供了StringBuilder解决字符串连接性能问题. 简单理解 StringBuilder性能好!(重点 ...
- reduce累加实现
与map端的模式类似,map端要重写Mapper方法,reduce端也要重写Reduce方法,这里有一个泛型,我们先看参数类型 分别对应输入keyin,valuein,keyout,valueout. ...
- 倒计时0日!Apache DolphineScheduler4月 Meetup 大佬手把手教你大数据开发,离线调度
随着互联网技术和信息技术的发展,信息的数据化产生了许多无法用常规工具量化.处理和捕捉的数字信息.面对多元的数据类型,海量的信息价值,如何有效地对大数据进行挖掘分析,对大数据工作流进行调度,是保障企业大 ...