jdk1.8的新特性

2019-06-25   355 次阅读


(一)主要内容

     1、Lambda 表达式

     2、函数式接口

     3、方法引用与构造器引用

     4、Stream API

     5、接口中的默认方法与静态方法

     6、新时间日期API

     7、其他新特性

 

(二)新特性简介

         (1)速度更快(主要体现在数据底层结构,如红黑树取代链表等)

         (2)代码更少(增加了新的语法 Lambda 表达式)

         (3)强大的 Stream API

         (4)便于并行

         (5)最大化减少空指针异常 Optional

 

   PS:其中最为核心的为 Lambda 表达式与Stream API

 

(三)Lambda 表达式(从匿名类到Lambda 的转换)

        Lambda 是一个匿名函数,可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以

写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

1、语法

       Lambda 表达式在Java 语言中引入了一个新的语法元素和操作符,为 “->“, 该操作符被称为 Lambda 操作符或剪头操作

符,将 Lambda 分为两个部分:左侧指定了 Lambda 表达式需要的所有参数,右侧指定了 Lambda 体(即 Lambda 表达式要执

行的功能)

    (1)语法格式一:无参,无返回值,Lambda 体只需一条语句

           Runnable runnable=() -> System.out.println("JAVA8");

    (2)语法格式二:Lambda 需要一个参数

    (3)语法格式三:Lambda 只需要一个参数时,参数的小括号可以省略

    (4)语法格式四:Lambda 需要两个参数,并且有返回值

    (5)语法格式五:当 Lambda 体只有一条语句时,return 与大括号可以省略

    (6)语法格式六:数据类型可以省略,因为可由编译器推断得出,称为“类型推断”

 

(四)函数式接口(只包含一个抽象方法的接口)

        通过 Lambda 表达式来创建该接口的对象(若 Lambda 表达式抛出一个受检异常,那么该异常需要在目标接口的抽

象方法上进行声明)       

        可以在任意函数式接口上使用 @FunctionalInterface 注解(可以检查它是否是一个函数式接口,同时javadoc 也会包含一

条声明,说明这个接口是一个函数式接口)

 

(五)方法引用与构造器引用

 

(六)强大的 Stream API

 

(七)新时间日期API

 

(八)接口中默认方法与静态方法

 

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议