小编Nat*_*anC的帖子

在Java中,main方法之后的那些语句的初始化顺序是什么

我了解到初始化顺序的原则是:

  1. 超类首先(在这种情况下不在这里讨论)
  2. 静态变量声明和静态初始化块按出现顺序排列
  3. 实例变量声明和静态初始化块按出现顺序排列
  4. 构造函数

但我仍然对此代码的输出感到困惑:

public class Test1 {

    static {
        add(2);
    }

    static void add (int num) {
        System.out.println(num + " ");
    }

    public Test1() {
        add(5);
        System.out.println("Constructor!");
    }

    static {
        add(4);
    }

    {
        add(6);
    }

    static {
        new Test1();
    }

    {
        add(8);
    }

    public static void main(String[] args) {
        System.out.println("Main method!");
        add(10);
    }

    {
        add(11);
    }
    static {
        add(12);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

2 
4 
6 
8 
11 
5 
Constructor!
12
Main method!
10 
Run Code Online (Sandbox Code Playgroud)

如果没有add(10)的陈述; 加(11); 加(12); 我完全可以理解.你能解释一下这三个陈述的初始化顺序吗?

java initialization

8
推荐指数
2
解决办法
940
查看次数

标签 统计

initialization ×1

java ×1