Java 8 vs Java 11, Java 11 的新功能!
Contents
- 在目前,比较主流的
稳定版
是Java 8
和Java 11
(Java 9,10 非稳定版) Java 11
相比Java 8
进化了一部分(有些是 Java 9,10 时已引入)
Java 11 新特性有哪些?
1. 变量类型 var
- 引入了
var
1 | // 普通变量 |
var
不能使用的情况,如下:- 重新赋值另一种类型
1
2var name = "paper"; // String 类型
name = 666; // int 类型 - 没有初始化
1
2var age;
age = 22; - 类的
成员变量
- 方法
入参
类型 返回值
类型
- 重新赋值另一种类型
2. HTTP Client 加持
- 位于 java.net.http 包下
- 支持
发送同步
、异步请求
,还可以带上自定义请求头
(ex:携带 JWT Token 权限信息去请求)
- 发送同步请求
1
2
3
4
5
6
7
8
9var request = HttpRequest.newBuilder()
.uri(URI.create("https://paper00.github.io/"))
.GET()
.build();
var response = httpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response); - 发送异步请求
1
2
3
4
5CompletableFuture<String> future = HttpClient.newHttpClient()
.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body);
System.out.println("先做别的事情");
System.out.println(future.get()); - 可以带自定义请求头
1
2
3
4
5
6
7
8
9
10var request = HttpRequest.newBuilder()
.uri(URI.create("https://paper00.github.io/"))
.header("Authorization", "Bearer eysdjEqoeiwQWeiowoQoieWruqoweE")
.GET()
.build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
3. String 处理增强
isBlank()
strip()
- 去空格repeat(7)
4. 集合增强
of()
- 创建集合copyOf()
- 复制集合
1 | var list = List.of(1, 2, 3); |
5. 函数上编程增强
Stream
流中的
takeWhile()
dropWhile()
1 | var list = List.of(1, 2, 3); |
6. 文件读写增强
Files 类
writeString()
readString()
InputStream 类
- transferTo()
支持直接通过字符串String
类读取写入
1 | // 读取 |
7. 支持 .java 源文件直接运行!
- 省去以前 javac 编译源文件过程,可以直接通过
java 指令
运行 .java 源文件和1
java hello.java
python
源文件的运行有点像