主要内容:

  1. 关键字
  2. 代码块
  3. 接口
  4. 枚举

    1.Java中的关键字

    1.1 static(静态)

    static 关键字

  • 静态的意思,可以修饰变量,也可以修饰方法,被static修饰的成员,我们叫做静态成员

    static 特点(堆内存中单独开辟一块静态存储空间)

  1. 静态成员被所类的所有对象共享
  2. 随着类的加载而加载,优先于对象存在
  3. 可以通过对象调用,也可以通过类名调用,建议使用类名

    static 关键字的注意事项

  • 静态方法中只能调用静态成员
  • 非静态方法中可以调用任何成员
  • 静态方法中不能存在this关键字

    1.2 final关键字

    概述

  • 翻译中文代表最终的意思,是java的一个关键字,也是一个修饰符,可以修饰类,可以修饰方法,也可以修饰变量

    特点

  • 修饰类:不能被继承,没有子类(太监类)

  • 修饰方法:不能被重写
  • 修饰变量:
    • 基本数据类型:值不能改变
    • 引用数据类型:地址不可发生改变,对象的属性可改变
    • 注意
      • 被final修饰的变量,我们叫做自定义常量,命名规范:每个字母需要大写,多个单词之间用下划线分割
      • final修饰成员变量需要注意初始化时机的问题:1)直接赋值 2)在构造方法执行完毕前赋值

        Java中的权限修饰符

        |
        | 同一个类中 | 同一个包中(子类无关类) | 不同包的子类 | 不同包的无关类 | | —- | —- | —- | —- | —- | | priavte | √ | | | | | 默认 | √ | √ | | | | protected | √ | √ | √ | | | public | √ | √ | √ | √ |

代码块

概述、位置 执行时机 作用
构造代码块 用一对大括号表示
定义在类中方法外
每次构造方法执行前
都会执行构造代码块
抽取构造方法中共性内容
静态代码块 在一对大括号前+static
定义在类中方法外
随着类的加载而加载,只加载一次 一般用于给静态成员初始化

接口

介绍

  • 接口:如果一个类中方法都是抽象方法,那么这个类应该是定义规则的类,我们应该把此类定义为接口,接口是一种引用数据类型
  • 作用:

    • 用于定义规则
    • 程序的扩展性

      接口的定义和规则

  • 定义接口的关键字:interface

    • public interface 接口名{…}
  • 类与接口之间的关系是实现关系,用关键字implements进行连接
    • public class 类名 implements 接口名 {…}
  • 接口不能实例化
  • 接口的子类我们叫做实现类
    • 要么重写接口中所有的抽象方法
    • 要么实现类是一个抽象类
  • 注意:类与接口的关系是实现关系,一个类可以实现多个接口,调用时用逗号隔开,还可以继承一个类的同时,实现多个接口

    接口的成员特点

  • 成员变量:都是常量,默认修饰符 public static final

  • 构造方法:没有构造方法
  • 成员方法:只能时抽象方法,默认修饰符public abstract

    • 关于JDK8和JDK9版本对接口增加了一些方法新特性

      接口中成员方法的特点

  • JDK8版本之前:只能是抽象方法

  • JDK8版本:
    • 默认方法
      • JDK8可以在接口中定义非抽象方法(带有方法体的方法),需要使用default进行修饰,其实就是默认方法
      • 作用:解决接口升级的问题
      • 格式:public default 返回值类型 方法名(参数){…}
      • 注意事项:
        • 默认方法不是抽象方法,可以继承,可以重写,重写需要去掉default关键字
        • public 可以省略,default不能省略
        • 如果实现类实现了多个接口,有相同的方法声明,那么实现类必须重写该方法
    • 静态方法
      • JDK8可以在接口中定义静态方法,也是有方法体的方法
      • 作用:方便调用此功能
      • 格式:public static 返回值类型 方法名(参数){…}
      • 注意事项
        • 静态只能通过接口名调用,不能通过实现类名字和对象调用
        • public可以省略,static不能省略
  • JDK9版本:

    • 私有方法
      • JDK9新增私有方法
      • 作用:抽取默认方法中共性内容
      • 格式:private 返回值类型 方法名 (参数){…}
      • 注意:要想抽取静态方法中的共性内容,需要对私有方法加上关键字static

        枚举

        简介

  • 枚举:当一个变量有几种固定可能的取值时,就可以讲它定义为枚举类型

  • 作用:更贴切,更加见名知意
  • 定义:public enum 枚举名{…}
  • 使用:通过枚举名直接引用枚举项即可,例如Sex.BOY、Sex.GIRL

    • 注意:每个枚举项都相当于枚举的对象

      本质

  • 枚举其实本质上是一个类,每一个枚举项是本枚举类型的一个对象。我们可以使用JDK提供的反编译命令,将枚举的字节码进行反编译查看

    • 枚举本质上就是最终类
    • 枚举项,就是枚举的对象,而且是静态的常量
    • 有私有的构造方法
    • 静态代码块
    • 继承了lang包下的Enum
  • 组成部分:
    • 构造器
    • 成员方法
    • 成员变量等
    • 但是定义的成份一定要在枚举项之后,而且最后一个枚举项必须要有分号结束。