模式切换
Java 11 版本特性
Java 11 于 2018 年发布,是一个长期支持(LTS)版本。它在 Java 10 的基础上进行了增强,并引入了一些新的特性和改进。 Java 11 增强了开发的便捷性,尤其是在字符串处理、HTTP 通信和垃圾回收等方面,同时去除了过时的模块,是一个非常稳定和重要的版本。 以下是 Java 11 的主要新特性:
新的字符串方法
Java 11 为 String
类增加了多个实用方法:
isBlank()
:判断字符串是否为空白。lines()
:将字符串按行分割为一个Stream
。strip()
:移除字符串首尾的空白字符,比trim()
更强大,支持 Unicode 空白字符。stripLeading()
:移除字符串开头的空白字符。stripTrailing()
:移除字符串末尾的空白字符。repeat(int n)
:重复字符串指定次数。
示例:
java
String str = " Hello ";
System.out.println(str.isBlank()); // false
System.out.println(str.strip()); // "Hello"
System.out.println(str.repeat(3)); // " Hello Hello Hello"
var 用于局部变量的 Lambda 表达式
Java 11 允许在 Lambda 表达式的参数中使用 var
,同时也可以添加注解。
java
(var x, var y) -> x + y
HttpClient API(标准化)
Java 11 标准化了新的 HttpClient
API,用于替代旧的 HttpURLConnection
,支持同步和异步请求。
java
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
单文件源代码程序
可以直接运行单个 Java 文件,无需先编译。
bash
$ java HelloWorld.java
Java 11 会自动编译并运行该文件。
增强的垃圾回收器
- ZGC(实验性垃圾回收器):
- 超低延迟的垃圾回收器,适用于大内存应用。
- 暂时为实验特性。
- 弃用 CMS(Concurrent Mark-Sweep)垃圾回收器。
Nest-Based 访问控制
增强了嵌套类之间的访问权限。嵌套类可以直接访问彼此的私有成员,而无需生成合成方法。
新的文件 API 方法
Files
工具类新增了一些方便的方法:
writeString(Path, CharSequence)
:向文件写入字符串。readString(Path)
:从文件读取字符串。isSameFile(Path, Path)
:判断两个路径是否指向同一文件。
移除和弃用的功能
- 移除 JDK 的部分模块:
Java EE
模块(如java.xml.ws
和java.activation
)。CORBA
模块。
- 弃用 Nashorn JavaScript 引擎。
- 移除
Applet API
。
本地化支持改进
增强了对 Unicode 10 和 BCP 47 标准的支持,改进了区域设置数据。