读取Java类中的静态成员的步骤是什么?

静态变量是在类加载时甚至在执行静态块之前创建的,并且静态块的目的是为静态变量赋值。静态变量存储在其定义的类的所有实例之间共享的值,而静态块是在首次加载类时执行的代码部分。如果我们希望在类加载时需要执行任何逻辑,则需要将该逻辑放在静态块中,以便在类加载时执行该逻辑。

JVM按照以下步骤读取类中的静态成员::

  • 从上到下识别静态成员

  • 从上到下执行静态变量分配和静态块。

  • 执行的主要方法。

示例

public class StaticFlow {
   static int firstNumber = 10;
   static {
      firstMethod();
      System.out.println("first static block");
   }
   public static void main(String[] args) {
      firstMethod();
      System.out.println("main method executed");
   }
   public static void firstMethod() {
      System.out.println(secondNumber);
   }
   static {
      System.out.println("second static block");
   }
      static int secondNumber = 20;
}

输出结果

0
first static block
second static block
20
main method executed