• 重写=复写 子父类继承之间
  • 重载 一个类的多个方法之间

    Java8 的几大特性

  • Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。

  • 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。::
  • 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
  • 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
  • Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
  • Date Time API − 加强对日期与时间的处理。
  • Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。

    Lambda表达式

  • lambda 表达式能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误

  • lambda 表达式中可以访问外层的局部变量,局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
  • vaiable used in lambda expression should be final or effectively final

    方法引用

  • 构造器引用

  • 静态方法引用
  • 特定类的任意对象的方法引用
  • 特定对象的方法引用

  • 函数式接口

  • 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,

  • 排除接口默认方法以及声明中覆盖Object的公开方法的统计。
    函数式接口可以被隐式转换为 lambda 表达式

  • 消费类型 Consumer 代表了接受一个输入参数并且无返回的操作 accept
  • 转换类型 Function 接受一个输入参数,返回一个结果。 apply
  • 断定类型 Predicate 接受一个输入参数,返回一个布尔值结果 test
  • 提供类型 Supplier 无参数,返回一个结果 get

  • UnaryOperator

    • 接受一个参数为类型T,返回值类型也为T。


    • Stream


  • 中间操作(intermediate operation)
  • 最终操作(terminal operation)
  • 延迟执行(laziness)和短路( short-circuiting)

    默认方法

  • 用于接口

  • 默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法
  • 这个默认方法可以是静态的

  • Base64