📜  什么是静态块 (1)

📅  最后修改于: 2023-12-03 15:06:28.260000             🧑  作者: Mango

什么是静态块

在Java中,静态块是一段类似于方法的代码块,其内容在类被加载时执行且仅执行一次。静态块通常被用来初始化类的静态变量。

静态块的语法

静态块的语法如下所示:

static {
    // 静态块的代码
}
静态块的执行时机

静态块的执行时机为类被加载时。类被加载的时机有三种:

  1. 当程序启动时,JVM会先加载主类,然后从主类开始加载所需的类及其依赖。
  2. 当程序中引用到该类的静态变量或方法时,JVM会加载该类。
  3. 当程序中使用Class.forName()方法时,JVM会加载该类。
静态块的作用

静态块的主要作用是初始化类的静态变量。

静态变量有以下两个特点:

  1. 静态变量在类加载时初始化,不需要等到实例化时才能初始化。
  2. 所有实例都共享同一个静态变量,可以用于实现计数器、全局配置等。

因为静态块在类被加载时执行且仅执行一次,所以可以在静态块中进行静态变量的初始化。例如:

public class Configuration {
    public static String host;
    public static int port;
    
    static {
        host = "localhost";
        port = 8080;
    }
}

当该类被加载时,静态块中的代码会执行,将host和port初始化为localhost和8080。

静态块的注意事项
  1. 静态块不能访问非静态成员变量和方法。
  2. 静态块的执行顺序与其在代码中的位置有关,靠前的静态块先执行。
  3. 如果同一个类中有多个静态块,则它们按照定义的顺序执行。
  4. 静态块中的异常控制需要注意,一旦抛出异常,类将无法成功加载。
总结

静态块是一段在类加载时执行且仅执行一次的代码块,主要用于初始化类的静态变量。使用静态块可以在一个类被加载时自动执行初始化操作,避免了手动初始化的繁琐。同时需要注意静态块的语法、执行时机、作用和注意事项,更好地理解和使用它。