Java笔记(一):基础()

1. JDK和JRE的区别

JDK(Java Development Kit)

  • 开发工具

    基本类库
    javac 编译
    javap 反编译
    javadoc

  • 基本类库
  • javac 编译
  • javap 反编译
  • javadoc
  • 运行环境

    JRE(Java Runtime Environment)

  • JRE(Java Runtime Environment)

3. Lambda表达式使用的前提条件

  • 方法的参数或局部变量类型必须为接口!!!,才能使用Lambda
    eg:局部变量类型:(Runnable是一个接口)
    匿名内部类方式:
Runnable r = new Runnable(){
  @override
  public void run(){
    System.out.println("xxx");
  }
}

这种情况,你要来个局部变量,可以使用 Lambda表达式

Runnable r = ()-> System.out.println("xxx");
  • 接口中有且仅有一个抽象方法
JDK8中,只有一个抽象方法的接口称为函数式接口,我们就能使用 Lambda。
针对一个接口中,是否有大于一个抽象方法?JDK8为我们新增了一个注解:@FunctionalInterface。它能够帮助我们检测这个接口是不是只有一个抽象方法,如果有两个抽象方法,则会报错。

4. PECS(Producer Extends Consumer Super)原则

频繁往外读取内容的,适合用上界Extends -> 子类

经常往里插入的,适合用下界Super -> 父类

————————

1. JDK和JRE的区别

JDK(Java Development Kit)

  • 开发工具

    基本类库
    javac 编译
    javap 反编译
    javadoc

  • 基本类库
  • javac 编译
  • javap 反编译
  • javadoc
  • 运行环境

    JRE(Java Runtime Environment)

  • JRE(Java Runtime Environment)

3. Lambda表达式使用的前提条件

  • 方法的参数或局部变量类型必须为接口!!!,才能使用Lambda
    eg:局部变量类型:(Runnable是一个接口)
    匿名内部类方式:
Runnable r = new Runnable(){
  @override
  public void run(){
    System.out.println("xxx");
  }
}

这种情况,你要来个局部变量,可以使用 Lambda表达式

Runnable r = ()-> System.out.println("xxx");
  • 接口中有且仅有一个抽象方法
JDK8中,只有一个抽象方法的接口称为函数式接口,我们就能使用 Lambda。
针对一个接口中,是否有大于一个抽象方法?JDK8为我们新增了一个注解:@FunctionalInterface。它能够帮助我们检测这个接口是不是只有一个抽象方法,如果有两个抽象方法,则会报错。

4. PECS(Producer Extends Consumer Super)原则

频繁往外读取内容的,适合用上界Extends -> 子类

经常往里插入的,适合用下界Super -> 父类