我在静态初始化块上发现了很多帖子,但是我试图更好地了解执行顺序及其原因.下面的代码打印出两个静态块中的文本,然后"then"打印出主静态块中的文本.
我理解编译器调用它的方式是在加载类时按顺序执行所有静态块,然后访问main方法.但是由于main方法本身是静态的,为什么不按照其他静态块的顺序执行它(甚至不确定它是否有用,只是试图理解一个概念,以及是否有这样做的紧迫原因).如果我们想在主块之后运行静态块怎么办?
class Cat {
static
{
System.out.println("This block welcomes you first");
}
public static void main(String[] args)
{
System.out.println("Meow world ");
}
static
{
System.out.println("This block welcomes you after");
}
}
Run Code Online (Sandbox Code Playgroud)
实际产出
This block welcomes you first
This block welcomes you after
Meow world
Run Code Online (Sandbox Code Playgroud)
为什么不?
This block welcomes you first
Meow world
This block welcomes you after
Run Code Online (Sandbox Code Playgroud)