IT教程 ·

最通俗易懂的 Java 11 新特征解说

有了这个开源 Java 项目,开发出炫酷的小游戏好像不难?

最通俗易懂的 Java 11 新特征解说 IT教程 第1张
大多数开发者照样沉浸在 Java 8 中,而 Java 14 将要在 2020 年 3 月 17 日宣布了,而我还在写着 Java 11 的新特征。Java 11Java 8 以后的第一个 LTS 版本,然则也自从 Java 11 入手下手, Oracle JDK 不再能够免费的用于商业用途,固然假如你是个人运用,或者是运用 Open JDK ,那末照样能够免费运用的。

有些人很体贴 Java 11 是不是收费,Oracle 示意除非你在生产中运用,不然能够不必收费。

纵然收费,免费的 Open JDK 不也很香吗。

可免费用于生产环境的 Open JDK 官网:

再 6 个月后,Java 15 都要来了,这类宣布节拍不仅让人有点目不暇接,更有点头昏眼花。然则不管怎么说,生长的趋向不可逆,所以补习一波 Java 11 也是很有必要的。

1. String API

字符串相对是 Java 中最经常使用的一个类了,String 类的要领运用率也都非常的高,在 Java 11 中又为 String 类带来了一系列的好用操纵。

  1. isBlank() 判空。
    // 判空,blank里我放入了全角空格,半角空格,TAB
    String blank = "    ";
    System.out.println(blank.isBlank());
    
    // 输出
    // true
  2. lines() 支解猎取字符串流。
    // lines 返回一个 Stream
    String line = "anbnc";
    Stream<String> lines = line.lines();
    // 运用 lambda 遍历
    lines.forEach(System.out::println);
    
    // 输出
    // a
    // b
    // c
  3. repeat() 复制字符串
    // 复制字符串
    String repeat = "我的微信:wn8398,";
    String repeat3 = repeat.repeat(3);
    System.out.println(repeat3);
    
    // 输出
    // 我的微信:wn8398,我的微信:wn8398,我的微信:wn8398,
  4. strip() 去除前后空缺字符。
    // 去除前后空缺
    String strip = "     https://www.wdbyte.com  ";
    System.out.println("==" + strip.trim() + "==");
    // 去除前后空缺字符,如全角空格,TAB
    System.out.println("==" + strip.strip() + "==");
    // 去前面空缺字符,如全角空格,TAB
    System.out.println("==" + strip.stripLeading() + "==");
    // 去背面空缺字符,如全角空格,TAB
    System.out.println("==" + strip.stripTrailing() + "==");
    
    // 输出
    // ==  https://www.wdbyte.com  ==
    // ==https://www.wdbyte.com==
    // ==https://www.wdbyte.com  ==
    // ==     https://www.wdbyte.com==

    这里注重,trim 只能去除半角空格,而 strip去除种种空缺符

2. File API

读写文件变得越发轻易。

// 建立临时文件
Path path = Files.writeString(Files.createTempFile("test", ".txt"), "https://www.wdbyte.com");
System.out.println(path);
// 读取文件
// String ss = Files.readString(Path.of("file.json"));
String s = Files.readString(path);
System.out.println(s);

// 效果
// https://www.wdbyte.com

3. JEP 321 - HTTP Client

Java 11 中 Http Client API 得到了标准化的支撑。且支撑 HTTP/1.1 和 HTTP/2 ,也支撑 websockets。

你能够像如许提议一个要求。

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://www.hao123.com"))
        .build();
// 异步
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
        .thenApply(HttpResponse::body)
        .thenAccept(System.out::println)
        .join();

// 同步
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

更多的如同步异步要求,并发接见,设置代办等体式格局,能够参考 OpenJDK 官方文档。

你如今还须要种种 HTTP Client 依靠包吗?

4. JEP 323 - Lambda 局部变量揣摸

Java 10 中引入了 var 语法,能够自动揣摸变量范例。在 Java 11 中这个语法糖能够在 Lambda 表达式中运用了。

var hashMap = new HashMap<String, Object>();
hashMap.put("wechat", "wn8398");
hashMap.put("website", "https://www.wdbyte.com");
hashMap.forEach((var k, var v) -> {
    System.out.println(k + ": " + v);
});

这里须要注重的是,(var k,var v) 中,k 和 v 的范例要么都用 var ,要么都不写,要么都写准确的变量范例。而不能 var 和其他变量范例混用。

最通俗易懂的 Java 11 新特征解说 IT教程 第2张

5. JEP 330 - 单敕令运转 Java

自从进修 Java 的第一天,我们就晓得运转一个 Java 文件,要先用 javac 敕令编译,再用 java 敕令运转,而如今只需一个 java 敕令就能够运转了。

$ cat Main.java

public class Main {

    public static void main(String[] args) {
        System.out.println("wechat:wn8398");
    }
}

$ java Main.java
wechat:wn8398

6. 免费的遨游飞翔纪录器

商业版 JDK 中一向有一款低开支的事宜信息网络东西,也就是遨游飞翔纪录器(Java Flight Recorder),它能够对 JVM 举行检查、剖析、纪录等。当涌现未知非常时能够经由过程纪录举行毛病剖析。这个好用的东西在 Java 11 中将开源免费。所有人都能够运用这个功用了。

其他更新

  1. JEP 309 - 增添动态文件常量。
  2. JEP 318 - 增添 Epsilon 垃圾网络器。
  3. JEP 320 - 删除 Java EE 和 corba 模块(java.xml.ws, java.xml.bind, java.activation, java.xml.ws.annotation, java.corba, java.transaction, java.se.ee, jdk.xml.ws, jdk.xml.bind)。
  4. JEP 329 - 增添加密算法 chacha20,poly1305 的完成。
  5. JEP 333 - 引入实验性的 ZGC 垃圾网络器,保证停摆时候不会凌驾 10ms。
  6. JEP 335 - 烧毁 Nashorn JavaScript 引擎

 

 

Python——详解collections工具库

参与评论