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编码的编码器和解码器
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。