[JavaSE コラム 60] 静的コード ブロック、Java クラスのロード中に実行されるコードの一部

著者のホームページ:デザイナー Xiao Zheng
著者の簡単な紹介: JAVA テクノロジ、システム カスタマイズ、リモート ガイダンスに重点を置いた 3 年間の JAVA フルスタック開発経験、エンタープライズ デジタル トランスフォーメーションに専念、CSDN カレッジおよび Blue Bridge クラウド コースの認定講師。
主な方向性: Vue、SpringBoot、WeChat アプレット

この記事では、Java の静的コード ブロックの概念と構文を説明し、サンプル コードを示します。静的コード ブロックは、Java クラスがロード中に実行するコードの一部です。

ここに画像の説明を挿入


1. 静的コードブロックとは何ですか

静的コード ブロックは、Java クラスのロード プロセス中に実行されるコードの一部であり、クラスの初期化に使用されます

静的コード ブロックは、クラスが初めてロードされたときに一度だけ実行され、その構文形式は次のとおりです。

static {
    
    
    // 静态代码块的代码逻辑
}

静的コードブロックの特徴は以下の通りです5 5時から、しっかり勉強してください。

  1. 静的コード ブロックは、クラスの読み込みフェーズ中に実行され、他のコード ブロックやコンストラクターよりも優先されます。
  2. 静的コード ブロックは1 回だけ実行され、クラスがロードされるときに自動的に実行されます。
  3. 静的コード ブロックを使用して、静的変数を初期化し、一部の静的リソースを初期化できます。
  4. 静的コード ブロックは、非静的メンバー(インスタンス変数、インスタンス メソッド) に直接アクセスできませんが、静的メンバー (静的変数、静的メソッド) にはアクセスできます。
  5. 静的コード ブロックは、定義された順序で順次実行されます。

静的コード ブロックは、静的変数の初期化、ドライバーの読み込み、静的リソースの初期化、その他の操作によく使用されます。その主な機能は、クラスの読み込み中に必要な準備を実行して、クラスの静的メンバーが使用前に正しく初期化されていることを確認することです。

ここに画像の説明を挿入


2. 静的コードブロックを使用する理由

Java では、静的コード ブロックの主な機能は、クラスのロード プロセス中に特定の初期化操作を実行することです。静的コード ブロックを使用した 4 つのうち 4 つを次に示します。4 つの一般的なシナリオについて、注意深く検討してください。

  1. 静的変数の初期化: 静的ブロックを使用して静的変数を初期化し、使用前に適切に初期化されていることを確認できます。これは、静的リソースを事前に準備する必要がある場合に非常に役立ちます。
  2. ドライバーのロード: Java では、データベース ドライバーをロードするには通常、静的コード ブロックを使用する必要があります。静的コード ブロックは、クラスの読み込み中に関連するドライバーの読み込み操作を実行できるため、データベースを使用する前にドライバーが正しく読み込まれていることを確認できます。
  3. 静的リソースの初期化: 静的リソースを事前に準備する必要がある場合、静的コード ブロックを使用して一部の初期化操作を実行できます。たとえば、Web サーバー プログラムの場合、サーバーの構成情報を静的コード ブロックで初期化できます。
  4. 1 回限りの操作を実行する: 静的コード ブロックは、クラスのロード時に 1 回だけ実行されるため、1 回だけ実行する必要がある一部の操作を実行するために使用できます。たとえば、構成ファイルの読み取り、データベース接続の確立などです。

つまり、静的コード ブロックは、クラスの読み込み中に初期化操作を実行するためのメカニズムを提供します。これを使用すると、クラスの使用時に関連するリソースと変数が正しく初期化されていることを確認できます。これは一部の特定のシナリオで非常に役立ち、コードの信頼性と保守性を向上させることができます。

ここに画像の説明を挿入


3. 静的コードブロックの使用方法

以下は静的コードブロックを使用したJavaのサンプルコードですので、ローカル環境にコピーして実行してみてください。

public class StaticBlockExample {
    
    
    private static int count;
    private static String message;

    // 静态代码块
    static {
    
    
        count = 10;
        message = "Hello, World!";
        System.out.println("静态代码块被执行");
    }

    public static void main(String[] args) {
    
    
        System.out.println("count: " + count);
        System.out.println("message: " + message);
    }
}

上記のコードでは、StaticBlockExample静的コード ブロックとmainメソッドを含む という名前のクラスを定義しました。静的コード ブロックはクラスのロード時に実行され、静的変数を初期化するために使用されます。

静的コード ブロックでは、10 10countに初期化します。10messageに初期化されますHello, World!

このメソッドではmain、これら 2 つの静的変数の値を出力します。

このコードを実行すると、次の結果が出力されます。

静态代码块被执行
count: 10
message: Hello, World!

クラスがロードされると、静的コード ブロックが実行され、静的変数が正しく初期化されるため、これらの初期化された静的変数を他のメソッドで使用できることがわかります。

ここに画像の説明を挿入


4. 静的コードブロックの面接での質問

1. 静的コード ブロックと通常のコード ブロックの違いは何ですか?

回答: 静的コード ブロックはクラスがロードされるときに実行され、通常のコード ブロックはオブジェクトがインスタンス化されるときに実行されます。静的コード ブロックは 1 回だけ実行されますが、通常のコード ブロックはオブジェクトがインスタンス化されるたびに実行されます。

2. 静的コード ブロックとコンストラクターの違いは何ですか?

回答: 静的コード ブロックはクラスのロード時に実行され、静的メンバー変数を初期化するために使用されます。構築メソッドは、オブジェクトがインスタンス化されるときに実行され、インスタンスのメンバー変数を初期化するために使用されます。

3. 静的コード ブロックの機能は何ですか?

回答: 静的コード ブロックは主に、静的変数の初期化、ドライバーのロードなど、クラスの読み込み中に必要な準備を実行するために使用されます。これにより、クラスの静的メンバーが使用前に適切に初期化されていることを確認できます。

4. 静的コード ブロックは非静的メンバーにアクセスできますか?

回答: 静的コード ブロックは、クラスのロード時に実行され、非静的メンバーはオブジェクト インスタンスに属しているため、非静的メンバー (インスタンス変数、インスタンス メソッド) に直接アクセスできません。ただし、静的コード ブロックは、オブジェクト インスタンスを作成することで、非静的メンバーに間接的にアクセスできます。

5. 静的コード ブロックの実行順序は何ですか?

回答: クラスがロードされると、静的コード ブロックは定義された順序で順次実行されます。複数の静的コード ブロックがある場合、それらの実行順序は定義された順序と一致します。


V. まとめ

この記事では、Java の静的コード ブロックの概念と構文を説明し、サンプル コードを示します。次回のブログでは、Java オブジェクト指向カプセル化の知識ポイントを説明します。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41464123/article/details/132003302