Skip to content

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.wsjava.activation)。
    • CORBA 模块。
  • 弃用 Nashorn JavaScript 引擎。
  • 移除 Applet API

本地化支持改进

增强了对 Unicode 10 和 BCP 47 标准的支持,改进了区域设置数据。

编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!