1.jdk1.8的新特性:
    1. Lambda 表达式 :
    (形式参数)->{
    代码块
    }

    2.方法引用:
    方法引用允许直接引用已有 Java 类或对象的方法或构造方法。
    image.png
    上例中我们将 System.out::println 方法作为静态方法来引用。

    3.函数式接口:
    有且仅有一个抽象方法的接口叫做函数式接口,函数式接口可以被隐式转为 Lambda 表达式。

    4.接口允许定义默认方法和静态方法:
    从 JDK8 开始,允许接口中存在一个或多个默认非抽象方法和静态方法。

    5.Stream API :
    将要处理的元素集 合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。
    image.png

    6.日期/时间类改进:
    之前的 JDK 自带的日期处理类是使用的第三方工具包,比如 commons-lang
    包等。 JDK8 出现之后,日期时间的创建、比较、调整、格式化、时间间隔等,都在java.time 包下,LocalDate/LocalTime/LocalDateTime。

    7.Optional 类 :
    Optional 类是一个可以为 null 的容器对象。如果值存在则 isPresent()方法会返回 true,调用 get()方法会返回该对象。
    image.png
    image.png

    8.Java8 Base64 实现 :
    Java 8 内置了 Base64 编码的编码器和解码器。

    2.Java的异常(必会):
    image.png
    Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。

    Error
    这是属于JVM层次的严重错误,导致JVM无法继续执行,无法采取任何恢复的操作。(例如:断电)
    Exception
    表示可恢复的例外,这是可捕捉到的。

    1.运行时异常(在运行会报错,编译时不会报错):
    RuntimeException类及其子类异常。例如:
    空指针异常:NullPointerException
    下标越界异常:IndexOutOfBoundsException
    当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。

    2.编译时异常(编译时就会报错,必须进行处理程序才能通过编译):
    Exception类及其子类。例如:
    IOException、SQLException等以及用户自定义的Exception异常

    3.常见的RunTime异常几种如下:
    空指针引用异常 :NullPointerException
    类型强制转换异常 :ClassCastException
    传递非法参数异常:IllegalArgumentException
    算术运算异常: ArithmeticException
    向数组中存放与声明类型不兼容对象异常: ArrayStoreException
    下标越界异常: IndexOutOfBoundsException
    创建一个大小为负数的数组错误异常: NegativeArraySizeException
    数字格式异常:NumberFormatException
    安全异常:SecurityException
    不支持的操作异常:UnsupportedOperationException