JDK1.8新特性
一、 1.Java SE的发展史
2014年3月18日,JDK 8发布【第三里程碑】
新特性及更新修改:
(1)Lambda表达式:Lambda表达式可以说是Java 8最大的卖点,它将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。
(2)接口的默认方法与静态方法:我们可以在接口中定义默认方法,使用default关键字,并提供默认的实现。所有实现这个接口的类都会接受默认方法的实现,除非子类提供的自己的实现。
(3)方法引用(含构造方法引用):方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码
(4)Optional 类:Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
(5)Stream API:新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中
(6)Date/Time API (JSR 310):加强对日期与时间的处理。Java 8新的Date-Time API (JSR 310)受Joda-Time的影响,提供了新的java.time包,可以用来替代 java.util.Date和java.util.Calendar。一般会用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration这些类,对于时间日期的改进还是非常不错的。
(7)Base64编码:在Java 8中,Base64编码成为了Java类库的标准。Base64类同时还提供了对URL、MIME友好的编码器与解码器。
2.了解Open JDK和Oracle JDK
(1)OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。
(2)Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。
二、1. Lambda 和 函数式接口
(1)Lambda 表达式相信不用再过多的介绍,终于在 Java 8 引入了,可以极大的减少代码量,代码看起来更清爽。
(2)函数式接口就是有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。可以隐式转化为 Lambda 表达式。定义一个函数式接口如下:
interface Operation{
int operation(int a,int b);
}
2. 特殊的接口和方法的调用
(1)特殊的接口:接口里面的方法可以有方法体
(2)方法的调用:可以使用::调用方法
构造方法引用使用方式:Class::new
Test test = Test.create(Test::new)
静态方法引用使用方式:Class::staticMethod
test.operate(1,2</