Javaにおける静的コードブロック、構築コードブロック、構築関数、一般コードブロック

1609 ワード

スタティツクコードブロック
静的コードブロックはクラスがロードされたときに実行され,一度だけ実行され,種々のコードブロックおよび構造関数よりも優先される.1つのクラスに複数の静的コードブロックがある場合は、書き込み順に順次実行されます.
機能:
一般的に、プロジェクトの開始時に実行するコードがある場合は、静的コードブロックが必要です.たとえば、プロジェクトの起動にロードする多くのプロファイルなどのリソースを静的コードブロックに入れることができます.
静的メソッドとの違い
静的コードブロックはアクティブに実行され、静的メソッドはパッシブに実行されます.
コードブロックの構築
public class CodeBlock {
    static{
        System.out.println("     ");
    }
    {
        System.out.println("     ");
    }
}

コンストラクションコードブロックは、オブジェクトを作成するたびに呼び出されますが、コンストラクション関数よりも優先されます.コンストラクション関数に依存します.つまり、オブジェクトをインスタンス化しないと、コンストラクションコードブロックは実行されません.
シーンの操作
オブジェクトを作成するたびに、コンストラクションコードブロックのプロパティを事前に呼び出すことで、オブジェクトの作成回数を統計するなどの機能を行うことができます.
コンストラクタ
コンストラクション関数は直接呼び出すことはできません.new演算子または他の初期化操作によってオブジェクトを作成するときに自動的に呼び出される必要があります.一般的な方法は、プログラムが実行されたときに呼び出される.クラスを定義場合、クラスのコンストラクション関数が通常表示され、関数に初期化を指定する作業も省略できるが、Javaコンパイラはデフォルトのコンストラクション関数を提供する.このデフォルトのコンストラクション関数はパラメータを持たない
一般コードブロック
構築コードブロックとの違い
構築コードブロックはクラスで定義され、通常のコードブロックはメソッドボディで定義されます.通常のコードブロックの実行順序と書く順序が一致している.
ublic void sayHello(){
    {
        System.out.println("     ");
    }
}

実行順序
静的コードブロック>構築コードブロック>コンストラクション関数>一般コードブロック
親と子の実行順序
まず親の静的な内容を実行し、親の静的な内容が実行された後、次に子の静的な内容を実行し、子の静的な内容が実行された後、親がコードブロックを構築しているかどうかを見て、もしあれば親の構造コードブロックを実行し、親の構造コードブロックが実行され、次に親の構造方法を実行する.親クラスのコンストラクションメソッドが実行されると、サブクラスがコンストラクションコードブロックを持っているかどうかを見て、ある場合はサブクラスのコンストラクションコードブロックを実行します.サブクラスの構築コードブロックの実行が完了してからサブクラスの構築方法を実行する.
要するに、静的コードブロックの内容は先に実行され、次に親構造コードブロックと構造方法が実行され、次にサブクラス構造コードブロックと構造方法が実行される.