Java 关键字

Java 关键字

按用途划分如下:

  1. 数据类型:13
    1. boolean、byte、char、 double、 float、int、long、short
    2. new、void、instanceof
  2. 语句:17
    1. break、continue
    2. default
    3. return、throw
    4. this、 super。
    5. do、 for、while、
    6. if、else、switch、case、
    7. try、catch、 finally
  3. 修饰:10
    1. private、 protected、public
    2. abstract、final、static
    3. native、synchronized、transient、 volatile
  4. 方法、类、接口、包和异常:7
    1. class、 extends
    2. implements、interface
    3. package、import
    4. throws
  5. 保留字:9
    1. future、 generic、 operator、 outer、rest、var
    2. goto、const、null

static

static:静态、全局

可修饰成员变量和方法,在类中共享。

静态结构

静态属性:使用 static 修饰的成员变量,称为静态变量。

  • 实例变量
    • 每个实例拥有独立的数据,互不影响。
    • 通过实例名访问。
  • 类变量(静态变量)
    • 同一个类的实例共享的数据。
    • 使用 static 修饰。
    • 通过类名访问。

静态方法:使用 static 修饰的方法,称为静态方法。

  • 实例方法:通过实例名访问。
  • 类方法(静态方法):使用 static 修饰,通过类名访问。
    1. 只能访问 static 结构(属性、方法)。
    2. Java 程序入口 main() 也是静态方法。
    3. 通常用于工具类方法。
      • Arrays.sort()
      • Math.random()

特点

  1. 静态结构不属于实例,而是属于类

  2. 即使通过实例名访问静态结构,编译器会自动转换为通过类名访问的形式。

    原理:👉 字节码技术 2.2 - 方法调用

思考

静态变量的加载时机

👉 类加载技术 1.2.2 - 准备

  1. 类加载阶段:加载、链接(验证、准备、解析)、初始化。
  2. 链接 - 准备阶段:为 static 变量分配空间、赋默认值。
    • 此阶段仅设置默认值,在初始化阶段才对变量赋值。
    • 若为 final static 或 final String,在此阶段赋值。

程序中大量使用静态结构的问题

  • 静态变量:内存问题。
    • static 变量会在类加载阶段分配内存空间。
    • 不会被垃圾回收,可能导致堆内存 OOM。
  • 静态方法:不支持多态,线程安全问题。
    • 若方法与实例对象有逻辑相关性(多态),不能使用静态方法。
    • 静态方法是类方法,多线程下更容易发生线程安全问题。

final

final:最终的

好处

  1. 提高性能,JVM 和 Java 应用都会缓存 final 变量。
  2. 线程安全,多线程下共享时不需要额外的同步开销。
  3. JVM 会对方法、变量及类进行优化。

修饰结构

可修饰结构

  1. :无法被继承。

  2. 方法:无法被重写。

  3. 属性:初始化后无法被重新赋值。

    1. 数据类型

      1. 基本类型:无法修改值。
      2. 引用类型:无法修改对象引用,但可以修改对象内容。
    2. 初始化时机

      1. 成员变量:声明时初始化、构造方法初始化。

      2. 局部变量:声明时初始化。

      3. 方法参数:方法调用时初始化。

        (相关知识:JVM 编译期优化 - 匿名内部类

    3. 命名规范:变量名大写,多个单词使用下划线分隔。

不可修饰结构

  1. 抽象类:抽象类需要被继承,与 final 矛盾。
  2. 构造方法:构造方法不能被继承和重写,final 修饰无意义。

关键字对比

  1. abstract:与 final 作用相反,无法同时使用。
  2. finally:用于异常处理。
  3. finalize():析构方法,垃圾回收前被 JVM 调用
posted @ 2023-02-10 00:34  Jaywee  阅读(19)  评论(0编辑  收藏  举报

👇