java8特性
- lambda表达式。把函数作为一个方法的参数,也叫闭包相对应的,还多了函数式接口,二者可以配合使用
Stream api
- 提供一种对Java集合运算和表达的高阶抽象,引入map、reduce等方法。
- map方法中还支持
类名::方法名
的调用方式,来单独调用方法
把map(a->a.getX())
简写成了map(A::getX)
- 新增了接口的默认方法,支持default实现了
- 新增Optional 类,解决空指针判断问题
- 新增Base64编码库
JAVA11新特性
(1)支持局部变量类型推断
可以写var这种变量声明了,编译器能自动识别,可加快部分情况下的编程速度。
var a = 1;
var s = “abcd”;
但是会加重编译器负担。
(2)字符串api增强
public static void main(String[] args) {
String str1 = "\t \n\r ";
//判断字符串是否是空白字符
System.out.println(str1.isBlank());
System.out.println("*****===========");
str1 = "\t abc \r \n ";
//去除字符串首尾中的空白,包括英文和其它所有语言的空白字符
String strip = str1.strip();
//去除字符串首部的空白,包括汉字
String stripLeading = strip.stripLeading();
//去除字符串尾部的空白,包括汉字
String stripTrailing = strip.stripTrailing();
System.out.println(strip+"<====>"+strip.length());
str1 = "java";
str1.repeat(3);//把str1 重复三次,输出 javajavajava
//去除字符串首尾中的空白,只能去除码值小于32的(如果是中文全角的空白是去除不了的)
String trim = str1.trim();
System.out.println(trim+"<====>"+trim.length());
}
(3)stream增强
- 支持
Stream.ofNullable(null)
生成一个值的流 - 支持while循环,符合一个条件就take结束或者开始计算
// 从第一个开始计算,当 n < 3 时就截止
Stream.of(1, 2, 3, 2, 1).takeWhile(n -> n < 3) .collect(Collectors.toList()); // [1, 2]
// 一开始不计算,当n<3不成立时开始计算
Stream.of(1, 2, 3, 2, 1).dropWhile(n -> n < 3) .collect(Collectors.toList()); // [3, 2, 1]
(4)Optional增强:支持orElseThrow等语法。
(5)正式引入HTTP Client API,和Apache 的 HttpClient的区别?
(6)支持jshell,类似py shell:可以节省验证demo的时间
(7)默认使用G1收集器,且jvm和垃圾收集有关的参数设置进行了很多调整
本博客文章除特别声明外,均可自由转载与引用,转载请标注原文出处:http://www.yelbee.top/index.php/archives/228/