JDK8的新特性

101 阅读1分钟

1. 时间

解决多个包,线程安全,时区

2. 接口默认方法

JDK8及以后,可以在接口中定义static方法和default方法。

3. lambda表达式

可以看作匿名函数类

  • 无参无返回值
  • 无参有返回值
  • 有参无返回值
  • 有参有返回值

4. 函数式接口(核心四大)

图片3.png

5. 方法引用

  • instanceName::methodName 。对象::方法名
  • ClassName::staticMethodName。 类名::静态方法
  • ClassName::MethodName 。类名::普通方法。比如Function<String,Integer> fun2 = String::hashCode; Function<String,Integer> 函数型接口,最后一个Integer是返回类型。
  • ClassName::new。 类名::new 调用的构造器
  • TypeName[]::new。 String[]::new 调用数组构造器

6. Optional类 (非空判断_主要方法)

  • Optional.of(T value),该方法通过一个非 null 的 value 来构造一个 Optional,返回的 Optional 包含了 value 这个值。对于该方法,传入的参数一定不能为 null,否则便会抛出 NullPointerException。
  • Optional.ofNullable(T value)【重要】,该方法和 of 方法的区别在于,传入的参数可以为 null。该方法会判断传入的参数是否为 null,如果为 null 的话,返回的就是 Optional.empty()。
  • Optional.empty(),该方法用来构造一个空的 Optional,即该 Optional 中不包含值,其实底层实现还是 如果 Optional 中的 value 为 null 则该 Optional 为不包含值的状态,然后在 API 层面将 Optional 表现的不能包含 null 值,使得 Optional 只存在 包含值 和 不包含值 两种状态。

7. Stream流(结果集处理)

图片4.png

8. Concurrent 包(线程包/略)