文章目录
- jdk1.8 的新特性
- 一、 Lambda 表达式
- 二、 方法引用
- 三、函数式接口
- 四、 接口允许定义默认方法和静态方法
- 五、Stream API
- 六、日期/时间类改进
- 七、Optional 类
- 八、 Java8 Base64 实现
jdk1.8 的新特性
一、 Lambda 表达式
Lambda 允许把函数作为一个方法的参数。
new Thread (()-> System.out.println ("abc" ) ) .start() ;
二、 方法引用
方法引用允许直接引用已有 Java 类或对象的方法或构造方法。
Arraylist<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.forEach(System.out::println);
//将 System.out::println 方法作为静态方法来引用。
三、函数式接口
有且仅有一个抽象方法的接口叫做函数式接口,函数式接口可以被隐式转换为Lambda 表达式。通常函数式接口上会添加@FunctionalInterface 注解
四、 接口允许定义默认方法和静态方法
从 JDK8 开始,允许接口中存在一个或多个默认非抽象方法和静态方法。
五、Stream API
新添加的 Stream API(java.util.stream)把真正的函数式编程风格引入到 Java中。这种风格将要处理的元素集
合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。
List<String> list = Arrays.asList("abc","","abc","bc","wqer");
list.stream()//获取集合的流对象
.filter(string -> !string.isEmpty())//对数据进行过滤操作,过滤掉空字符串
.distinct()//去重
.forEach(a -> System.out.println(a));
六、日期/时间类改进
之前的 JDK 自带的日期处理类非常不方便,我们处理的时候经常是使用的第三方工具包,比如 commons-lang
包等。不过 JDK8 出现之后这个改观了很多,比如日期时间的创建、比较、调整、格式化、时间间隔等。
这些类都在 java.time 包下,LocalDate/LocalTime/LocalDateTime。
七、Optional 类
Optional 类是一个可以为 null 的容器对象。如果值存在则 isPresent()方法会返回 true,调用 get()方法会返回该对象。
String string ="abc";
Optional<String> optional = Optional.of(string);
boolean present = optional.isPresent();
String value = optional.get();
System.out.println(present+"/"+value);
八、 Java8 Base64 实现
Java 8 内置了 Base64 编码的编码器和解码器。
相关文章
暂无评论...