java11新特性


layout: post title: ‘java11新特性’ subtitle: ‘java11新特性’ date: 2018-10-07 categories: java author: yates cover: ‘’ tags: java —

前言

java11于上个月25号发布,这时继java8以后Oracle长期会支持的一个版本。那么都有哪些新特性呢?

本地变量推断 这个特性是java10就出现了,局部变量类型推断就是用左边的类型直接使用var定义(大多数弱语言的写法)

var str = "hello world!";

字符串加强 提供了一些列字符串处理方法

// 判断字符串是否空白
boolean isBlank(); 

// 去除首尾空格
strip();

// 去除尾部空格
stripTrailing();

// 去除首部空格
stripLeading();

// 复制字符串(入参为复制次数)
repeat(3);

// 行数统计
lines().count();

集合加强 从java9开始就为集合添加了of和copyOf的方法,用来创建不可变的集合

// 创建不可变集合
of()

// 从一个集合复制为一个不可变集合
copyOf(); !copyOf()方法在创建集合时会先判断来源集合时不时AbstractImmutableList类型的,如果是,就直接返回,如果不是调用of创建一个新的集合,而通过of创建的集合就是AbstractImmutableList类型的

Stream加强

// 增加单个参数构造方法,可为null
Stream.ofNullable(null).count();

// 增加takeWhile()和dropWhile()方法
// 从开始计算,当n<3时就截止
Stream.of(1,2,3,2,1).takeWhile(n -> n < 3).collect(Collectors.toList());

// 当n<3时就开始计算
Stream.of(1,2,3,2,1).dropWhile(n -> n < 3).collect(Collectors.toList());

Optional加强

// 存在或抛异常
Optional.of("hello world").orElseThrow();
// optional转换为一个stream
Optional.of("hello world").stream().count();
// 当optional空时给定一个替代者
Optional.ofNullable(null).or(() -> Optional.of("hello world")).get();

inputStream转化为outputStream

inputStream.transferTo(outputStream);

同步异步的处理http请求,httpclient

var client = HttpClient.newHttpClient();

// 同步
response = client.send(request,str)

// 异步
client.sendAsync().thenApply().thenAccept();

一个命令编译加运行

java hello.java