ホームページ >Java >&#&チュートリアル >Java で静的初期化ブロックをいつ使用するのか、なぜ使用するのか?

Java で静的初期化ブロックをいつ使用するのか、なぜ使用するのか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-02 17:31:40738ブラウズ

When and Why Use Static Initialization Blocks in Java?

静的初期化ブロックについて

Java では、静的初期化ブロックは、クラス内の静的フィールドを初期化する特別なメカニズムを提供します。静的フィールドは 1 回だけ初期化され、クラスのすべてのインスタンスで同じ値を共有します。宣言内で静的フィールドに値を割り当てることは可能ですが、このアプローチが現実的でない特定のシナリオがあります。

静的初期化ブロックを使用する理由

状況を考えてみましょう。ここで、静的フィールドの値は、その宣言の時点では決定できません。たとえば、構成設定に基づいて初期化されたデータベース接続のリストを表すフィールドがあると想像してください。設定がまだ利用可能になっていないため、宣言内でこのフィールドを直接初期化することはできません。

そのような場合、静的初期化ブロックが機能します。これらのブロックはクラスの読み込み中に実行され、現在のコンテキストに基づいて静的フィールドを初期化する便利な方法を提供します。これらは静的中括弧で囲まれています:

public static class Test {
    static {
        // Initialize static fields here
    }
}

非静的ブロックと静的ブロック

静的初期化ブロックとは異なり、非静的ブロック (インスタンスとも呼ばれます)初期化ブロック) は、クラスのインスタンスが作成されるたびに実行されます。これらは、インスタンス固有のフィールドを初期化するか、他のセットアップ操作を実行するために使用されます。

静的ブロックと非静的ブロックの違いを説明するには、次のコードを検討してください。 :

public class Test {
    static {
        System.out.println("Static block executed once");
    }
    {
        System.out.println("Non-static block executed each time an instance is created");
    }
    public static void main(String[] args) {
        Test t1 = new Test(); // Non-static block executed
        Test t2 = new Test(); // Non-static block executed again
    }
}

このコードを実行すると、次のように表示されます。出力:

Static block executed once
Non-static block executed each time an instance is created
Non-static block executed each time an instance is created

ご覧のとおり、静的ブロックはクラスの読み込み中に 1 回だけ実行されますが、非静的ブロックはクラスのインスタンスが作成されるたびに実行されます。

以上がJava で静的初期化ブロックをいつ使用するのか、なぜ使用するのか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。