面试官问我Java9~14的有哪些重要的新特性,我哭了~~~( 三 )
文章插图
字符串加强Java 11 增加了一系列的字符串处理方法 , 如以下所示 。
Guide 哥:说白点就是多了层封装 , JDK 开发组的人没少看市面上常见的工具类框架啊!
//判断字符串是否为空" ".isBlank();//true//去除字符串首尾空格" Java ".strip();// "Java" //去除字符串首部空格" Java ".stripLeading();// "Java "//去除字符串尾部空格" Java ".stripTrailing();// " Java"//重复字符串多少次"Java".repeat(3);// "JavaJavaJava"//返回由行终止符分隔的字符串集合 。 "A\nB\nC".lines().count();// 3 "A\nB\nC".lines().collect(Collectors.toList());
ZGC:可伸缩低延迟垃圾收集器ZGC 即 Z Garbage Collector , 是一个可伸缩的、低延迟的垃圾收集器 。
ZGC 主要为了满足如下目标进行设计:
- GC 停顿时间不超过 10ms
- 即能处理几百 MB 的小堆 , 也能处理几个 TB 的大堆
- 应用吞吐能力不会下降超过 15%(与 G1 回收算法相比)
- 方便在此基础上引入新的 GC 特性和利用 colord
- 针以及 Load barriers 优化奠定基础
- 当前只支持 Linux/x64 位平台
标准 HTTP Client 升级Java 11 对 Java 9 中引入并在 Java 10 中进行了更新的 Http Client API 进行了标准化 , 在前两个版本中进行孵化的同时 , Http Client 几乎被完全重写 , 并且现在完全支持异步非阻塞 。
并且 , Java11 中 , Http Client 的包名由 jdk.incubator.http 改为java.net.http , 该 API 通过 CompleteableFuture 提供非阻塞请求和响应语义 。
使用起来也很简单 , 如下:
var request = HttpRequest.newBuilder().uri(URI.create("")).GET().build();var client = HttpClient.newHttpClient();// 同步HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());// 异步client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);
简化启动单个源代码文件的方法- 增强了 Java 启动器 , 使其能够运行单一文件的 Java 源代码 。 此功能允许使用 Java 解释器直接执行 Java 源代码 。 源代码在内存中编译 , 然后由解释器执行 。 唯一的约束在于所有相关的类必须定义在同一个 Java 文件中
- 对于 Java 初学者并希望尝试简单程序的人特别有用 , 并且能和 jshell 一起使用
- 一定能程度上增强了使用 Java 来写脚本程序的能力
- 从 Java 10 开始 , 便引入了局部变量类型推断这一关键特性 。 类型推断允许使用关键字 var 作为局部变量的类型而不是实际类型 , 编译器根据分配给变量的值推断出类型
- Java 10 中对 var 关键字存在几个限制 只能用于局部变量上 声明时必须初始化 不能用作方法参数 不能在 Lambda 表达式中使用
- Java11 开始允许开发者在 Lambda 表达式中使用 var 进行参数声明
- 新的垃圾回收器 Epsilon , 一个完全消极的 GC 实现 , 分配有限的内存资源 , 最大限度的降低内存占用和内存吞吐延迟时间
- 低开销的 Heap Profiling:Java 11 中提供一种低开销的 Java 堆分配采样方法 , 能够得到堆分配的 Java 对象信息 , 并且能够通过 JVMTI 访问堆信息
- TLS1.3 协议:Java 11 中包含了传输层安全性(TLS)1.3 规范(RFC 8446)的实现 , 替换了之前版本中包含的 TLS , 包括 TLS 1.2 , 同时还改进了其他 TLS 功能 , 例如 OCSP 装订扩展(RFC 6066 , RFC 6961) , 以及会话散列和扩展主密钥扩展(RFC 7627) , 在安全性和性能方面也做了很多提升
- Java学习:Java学习到什么程度可以进行面试
- 程序员面试金典17.05_go_字母与数字
- 安卓春招面经:二本渣院面试网易被拒,最终获腾讯阿里offer
- 「6」进大厂必须掌握的面试题-Hibernate
- 震惊!京东T4大佬面试整整三个月,才写了两份java面试笔记
- 安卓面试必备的JVM虚拟机制详解,看完之后简历上多一个技能
- 面试官问:MySQL 的自增 ID 用完了,怎么办?
- 「3」Java面试-Servlet
- 大数据hbase面试宝典(三)
- 北大英华大数据面试题