可能性のある複製:
静的初期化ブロック
次のcodeを考慮してください。
public class Test {
{
System.out.println("Empty block");
}
static {
System.out.println("Static block");
}
public static void main(String[] args) {
Test t = new Test();
}
}
最初にstaticブロックが実行され、次にemptyブロックが実行されることを理解しています。しかし問題は、emptyブロックの実際の有用性を理解できたことがないことです。誰でも実際の例を示すことができます-
それらは2つの非常に異なる目的のためです。
この質問はstackoverflowで何度も回答されているので、同様の質問とその回答を検索して確認することをお勧めします。例: static-initialization-blocks
静的ブロックは、クラスがロードされるたびに実行されます。空のブロックは、クラスをインスタンス化するたびに実行されます。これらを比較してみてください:
1。
public static void main(String[] args) {
Test t = new Test();
}
2。
public static void main(String[] args) {
}
出力:
1。
静的ブロック
空のブロック
2。
静的ブロック
レイマンの言葉では、静的ブロックはonceと呼ばれるだけで、そのタイプのオブジェクトをいくつ作成しても関係ありません。