jdk1.8 的新特性

文章目录

  • 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 编码的编码器和解码器。

你可能感兴趣的:(java基础学习,java,开发语言)