2016-03-30 17 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は正確に何を角かっこ?その外観から、クラスが使用されているときに括弧の中のコードを実行しているようですが、コンストラクタがあればなぜ存在するのでしょうか?コンストラクタ内で初期化するために必要なコードを置くことはできませんか?静的な単語は単語のコンストラクタの前に来るので、コンストラクタの前にコードを実行しているようです。

+0

これは静的初期化子と呼ばれ、アプリケーションの実行時に実行されます。あなたはそれのためのAのインスタンスを必要としません。これは、あなたのためにENUMインスタンスを作成するのと同じスコープです(それはそれ以降に実行されます)。 – EpicPandaForce

答えて

0

それは静的初期化ブロックであり、それはhere

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

    static{ 
     // static initializer 
    } 

    { 
     // instance initializer 
    } 

} 

初期化順序チェック静的初期化子、インスタンス初期化子、コンストラクタ初期化子です。

+0

ありがとう、私が探している用語は静的初期化ブロックがドキュメントを助けてくれてありがとう – securenai