2016-03-30 29 views
1

标题可能不容易理解,但基本上我已经看到了这一点在一些程序中,我很好奇它,清除事情我简化了代码,以在某种程度上我们可以专注于我的问题。混淆与关键字静态与括号在一个类

public class A { 

    public A() { 
     System.out.println("constructor"); 
    } 
    static{ 
     System.out.println("static"); 
    } 
} 

-

public class B { 

    public static void main(String[] args) { 

     A a = new A(); 
    } 

} 

当我运行代码的输出是:

静态

构造

究竟是什么这个静态W¯¯第i个括号?从外观看来,它似乎是在使用类时运行括号内的代码,但为什么存在如果我们有构造函数?我们不能把我们需要在构造函数里面初始化的代码放进去吗?并且它似乎在构造函数之前运行它的代码,因为static这个词在构造函数之前出现,为什么这样呢?

+0

它被称为静态初始化程序,它在您运行应用程序时运行。你甚至不需要它的一个实例。它与创建ENUM实例的范围相同(在此之后运行)。 – EpicPandaForce

回答

0

它是静态初始化块,检查here

public class Test{ 
    public Test(){ 
     // constructor initialization 
    } 

    static{ 
     // static initializer 
    } 

    { 
     // instance initializer 
    } 

} 

初始化顺序是静态初始化,实例初始化,构造函数初始化。

+0

谢谢所以我期待的术语是静态初始化块帮助文档,谢谢 – securenai