jdk9新特性学习(二)

// JDK8 --> JDK9

try语句的升级

// 不用显式关闭流
try(InputStreamReader reader = new InputReader(System.in)) {
	reader.read();
}catch(IOException e) {
	e.printStackTrace();
}

下划线使用限制

JDK9中 _ 变为关键字,不能使用下划线作为标识符

String存储结构改变

JDK9之前,字符串使用char数组存放。JDK9之后使用byte数组 + encoding flag(编码格式)

创建只读集合

// 只读集合
List<String> newList = Collections.unmodifiableList(oldList);
Set<String> newSet = Collections.unmodifiableSet(oldSet);
Map<Object, Object> map = Collections.unmodifiableMap(new HashMap<>() {
	{
		put(1, "1");
		put(2, "2");
	}
});
// of方法也能创建只读集合
List.of(1,2,3);

增强Stream API

takeWhile()&dropWhile()
  • takeWhile不同于filter,该方法遇到不符合的情况就停止,返回不符合条件之前的所有元素。
  • dropWhile与takeWhile功能相反,打印结果为88、23、66、1
List<Integer> list = Arrays.asList(10, 2, 5, 88, 23, 66, 1);
list.stream().takeWhile(x -> x<70).forEach(System.out::println);
// 打印结果为 10、2、5
ofNullable()
  • jdk8中stream不能完全为null,jdk9中ofNullable允许创建单个空元素的stream
// 比起of健壮性更好
Stream.ofNullable(null);
iterate()
// 0 ~ 9
Stream.iterate(0, x->x+1).limit(10).forEach(System.out::println);
Stream.iterate(0, x->x<10, x->x+1).forEach(System.out::println);

归纳Stream实例化的方法:

  1. list.stream()
  2. Arrays
  3. of() ofNullable()
  4. iterate()

多分辨率图像API

  1. api定义在java.awt.image包下
  2. 将不同分辨率的图像封装到一张多分辨率的图像中,作为它的变体
  3. 基于屏幕分辨率大小Graphics类可以从MutiResolutionImage接口中获取所需变体
    可以类比安卓res包下的多分辨率文件夹的思想

新·HTTP客户端API

HttpClient已经支持HTTP2

HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create("www.baidu.com")).GET().build();
HttpResponse<String> res = client.send(req, HttpResponse.BodyHandler.asString());
if(res.statusCode()==200) {
	System.out.println(res.body());
}

智能java编译工具

sjavac用于在多核处理器的情况下提升JDK的编译速度,并取代javac成为java环境中默认的通用编译工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值