JavaSE:Java基础7:java8新特性

java8新特性

 

JavaSE:Java基础7:java8新特性

 

新特性推出原因:速度更快 ,代码更少,强大的Stream  API,便于并行,最大化减少空指针异常Optional。

 

Lambda表达式:Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码
像数据一样进行传递)。可以写出更简洁、更灵活的代码。

上两个demo

demo1

JavaSE:Java基础7:java8新特性

demo2

JavaSE:Java基础7:java8新特性

 

 

Lambda表达式语法

Lambda 表达式在Java 语言中引入了一个新的语法元素和操作符。这个操作符为 “- > ” , 该操作符被称
为 Lambda 操作符或剪头操作符。它将 Lambda 分为两个部分:
左侧:指定了 Lambda 表达式需要的所有参数
右侧:指定了 Lambda 体,即 Lambda 表达式要执行的功能(实现的方法)。 

JavaSE:Java基础7:java8新特性

JavaSE:Java基础7:java8新特性

JavaSE:Java基础7:java8新特性

JavaSE:Java基础7:java8新特性

JavaSE:Java基础7:java8新特性

类型推断: Lambda 表达式中的参数类型都是由编译器推断得出的。Lambda 表达式中无需指定类型,程序依然可以编译,这因为 javac 根据程序的上下文,在后台推断出了参数的类型。Lambda 表达式的类型依赖于上下文环境,是由编译器推断出来的。这就是所谓的“类型推断” 。

Optional类:Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。

常用方法:
Optional.of(T t) : 创建一个 Optional 实例
Optional.empty() : 创建一个空的 Optional 实例
Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
isPresent() : 判断是否包含值
orElse(T t) : 如果调用对象包含值,返回该值,否则返回t
orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值
map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
flatMap(Function mapper):与 map 类似,要求返回值必须是Optional