java中的优先级

时间:2015-07-12 08:23:43

标签: java constructor

任何人都可以解释一下这个输出是怎么来的

class Class
{    
    {   
        System.out.println("Instance Initializer block");   
    }

    Class()
    {
       System.out.println("Default Constructor");
    }

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

    public static void main(String[] Args) 
    {
        new Class();
        System.out.println("Hello world");
    }
}

输出:

Static Block
Instance Initializer Block
Default Constructor
Hello World

2 个答案:

答案 0 :(得分:4)

首次执行静态初始化程序块,初始化类时,打印"Static Block"

创建实例(new Class())时,首先执行实例初始化程序块(打印"Instance Initializer Block"),然后执行构造函数(打印"Default Constructor")。

最后执行main方法的println语句,打印"Hello World"

答案 1 :(得分:1)

序列如下

  1. 在JVM(类加载器)加载Class时运行静态初始化块(无论实例创建如何都调用静态块
  2. 当您尝试创建实例时  2.1调用init块  2.2然后是构造函数。
  3. 最后你的打印声明