java8_new

  1. jdk8新特性
    1. lambda表达式
    2. 方法引用
    3. 函数式接口
    4. 默认方法
    5. stream流
    6. optional类
    7. Nashorn,JavaScript引擎
    8. 时间api
    9. Base64

jdk8新特性

lambda表达式

闭包,把函数作为一个方法的参数

(parameters) -> {statements;}

特征

  • 可选类型说明:不需要声明参数类型,编译器可以统一识别参数值
  • 可选的圆括号:一个参数无需定义原括号,多个参数需要定义圆括号
  • 可选的大括号:主体包含了一个语句,不需要使用大括号
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值

方法引用

方法引用使用一对冒号::

函数式接口

有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式

默认方法

接口的默认方法,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。
接口可以声明(并且可以提供实现)静态方法。

stream流

stream of elements -> filter -> sorted -> map -> collect
stream是一个来自数据源的元素队列且支持聚合操作

  • 元素是特定类型的对象,形成一个队列。java中的stream并不会存储元素,而是按需计算
  • 数据源流的来源,可以是集合,数组,i/o cahnnel,generator
  • 聚合操作类似sql语句一样的操作
    和Collection操作的不同
  • pipelining:中间操作都会返回流对象本身。
  • 内部迭代:对集合遍历都是通过Iterator和for-each的方式,显式的在集合外部进行迭代,这叫外部迭代。Stream流提供内部迭代的方式,通过访问者实现

optional类

一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。是一个容器,它可以保存类型T的值,或者仅仅保存null。

Nashorn,JavaScript引擎

时间api

Base64

base64编码的编码器和解码器


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。