タイトルはわかりにくいかもしれませんが、基本的に私はこれをいくつかのプログラムで見てきましたが、私は興味があります。私は私の質問に集中することができます。クラス内の括弧で囲まれたキーワードとの混同
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は正確に何を角かっこ?その外観から、クラスが使用されているときに括弧の中のコードを実行しているようですが、コンストラクタがあればなぜ存在するのでしょうか?コンストラクタ内で初期化するために必要なコードを置くことはできませんか?静的な単語は単語のコンストラクタの前に来るので、コンストラクタの前にコードを実行しているようです。
これは静的初期化子と呼ばれ、アプリケーションの実行時に実行されます。あなたはそれのためのAのインスタンスを必要としません。これは、あなたのためにENUMインスタンスを作成するのと同じスコープです(それはそれ以降に実行されます)。 – EpicPandaForce