1.jdk1.8的新特性:
1. Lambda 表达式 :
(形式参数)->{
代码块
}
2.方法引用:
方法引用允许直接引用已有 Java 类或对象的方法或构造方法。
上例中我们将 System.out::println 方法作为静态方法来引用。
3.函数式接口:
有且仅有一个抽象方法的接口叫做函数式接口,函数式接口可以被隐式转为 Lambda 表达式。
4.接口允许定义默认方法和静态方法:
从 JDK8 开始,允许接口中存在一个或多个默认非抽象方法和静态方法。
5.Stream API :
将要处理的元素集 合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。
6.日期/时间类改进:
之前的 JDK 自带的日期处理类是使用的第三方工具包,比如 commons-lang
包等。 JDK8 出现之后,日期时间的创建、比较、调整、格式化、时间间隔等,都在java.time 包下,LocalDate/LocalTime/LocalDateTime。
7.Optional 类 :
Optional 类是一个可以为 null 的容器对象。如果值存在则 isPresent()方法会返回 true,调用 get()方法会返回该对象。
8.Java8 Base64 实现 :
Java 8 内置了 Base64 编码的编码器和解码器。
2.Java的异常(必会):
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