Why static block is not executed

Sri*_*san 6 java static-block classloading

As per java doc, static block is executed when the class is initialized.

Could anyone please tell me why static block is not executed when I run below code?

class A {
    static {
        System.out.println("Static Block");
    }
}

public class Main {

    public static void example1() {
        Class<?> class1 = A.class;
        System.out.println(class1);
    }


    public static void example2() {
        try {
            Class<?> class1 = Class.forName("ClassLoading_Interview_Example.ex1.A");
            System.out.println(class1);
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        example1();
    }
}
Run Code Online (Sandbox Code Playgroud)

Nik*_*ros 5

类的静态初始化通常在第一次发生以下事件之前立即发生:

  • 创建该类的实例,
  • 调用类的静态方法,
  • 分配了类的静态字段,
  • 使用非常量静态字段,或 [...]

您目前没有执行上述任何操作。所以,通过替换

Class<?> class1 = A.class;
System.out.println(class1);
Run Code Online (Sandbox Code Playgroud)

以此为例

A object = new A();
Run Code Online (Sandbox Code Playgroud)

会给你你的结果。