ホームページ > Java > &#&チュートリアル > Java の静的初期化コード ブロックと非静的初期化コード ブロックの違いは何ですか?

Java の静的初期化コード ブロックと非静的初期化コード ブロックの違いは何ですか?

Patricia Arquette
リリース: 2024-12-21 09:45:10
オリジナル
504 人が閲覧しました

What's the Difference Between Static and Non-Static Initialization Code Blocks in Java?

静的初期化コード ブロックと非静的初期化コード ブロック

Java では、static キーワードを使用してクラスレベルの変数とメソッドを宣言できます。クラスのインスタンスを作成せずにアクセスできます。ただし、クラス内の関数の一部ではないコード ブロックで static を使用することもできます。

クラス初期化コード ブロック

A クラス初期化コード ブロックは、static 修飾子を使用して宣言されています。これは、クラスがメモリにロードされるときに実行され、静的変数を初期化し、他のクラスレベルのタスクを実行するために使用されます。例:

public class Test {
    private static int a = 5;
    static {
        System.out.println("Class initialization code executed");
    }
}
ログイン後にコピー

クラス初期化コード ブロックは、Test クラスのインスタンスが作成される前に実行され、変数 a は 5 に初期化されます。

インスタンス初期化コード ブロック

インスタンス初期化コード ブロックは、 static 修飾子なしで宣言され、クラスのインスタンスの作成時に実行されます。これは、インスタンス変数を初期化し、インスタンスのその他の初期化タスクを実行するために使用されます。例:

public class Test {
    private int a = 5;
    {
        System.out.println("Instance initialization code executed");
    }
}
ログイン後にコピー

インスタンス初期化コード ブロックは、Test クラスのコンストラクターが呼び出される前に実行され、変数 a は 5 に初期化されます。

Key相違点

クラスとインスタンスの初期化コード ブロックの主な違いは次のとおりです。

  • クラス初期化コード ブロックはクラスがロードされるときに実行され、インスタンス初期化コード ブロックはクラスのインスタンスが作成されるときに実行されます。
  • クラス初期化コード ブロックは次のことができます。インスタンス初期化コード ブロックは静的変数とインスタンス変数の両方にアクセスできます。
  • クラス初期化コード ブロックはクラスのすべてのインスタンス間で共有されますが、インスタンス初期化コード ブロックは静的変数とインスタンス変数の両方にアクセスできます。インスタンス初期化コード ブロックは各インスタンスに固有です。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート