Javaのクラスの静的コードブロック

1755 ワード

クラスのStaticコードブロック、すなわち静的コードブロックは、一度だけ実行され、クラスがロードされたときに実行されます.各クラスは1回しかロードされないため、静的コードブロックも1回しか実行されません.コンストラクションメソッドはオブジェクトを生成するたびにクラスのコンストラクションメソッドを呼び出すのでnewは一度にコンストラクションメソッドを呼び出す.静的コードブロックの役割もいくつかの初期化作業を完了する.まず静的コードブロックを実行し,次に構築方法を実行する.静的コードブロックはクラスがロードされたときに実行され、構築方法はオブジェクトが生成されたときに実行される.クラスを呼び出してオブジェクトを生成するには、まずJava仮想マシン(JVM)にクラスをロードし、JVMによってこのクラスをロードしてオブジェクトを生成する必要があります.継承アーキテクチャに構造方法と静的コードブロックがある場合、まず最上位クラスの静的コードブロックを実行し、最下位クラスの静的コードブロックまで実行します.次に、最上位クラスの構築方法を実行し、最上位クラスの構築方法まで実行します.注:静的コードブロックは1回のみ実行されます.静的メソッドでは、非静的メンバー変数にアクセスできません.静的メソッドでは、静的メンバー変数にアクセスできます.静的メンバー変数は、非静的メソッドでアクセスできます.このキーワードは静的メソッドでは使用できません.次のプログラムの実行結果はliulongchangdeMacBook-Air:JavaClass liulongchang$ java FinalTest4 P static block Q static block S static block P constructor Q constructor S Static block P constructor Q constructor S Static block liulongchangdeMacBook-Air:JavaClass liulongchang$です.
プログラムコード:public class FinalTest4 { public static void main(String[] args) { new S(); new S(); } } class P { static { System.out.println("P static block"); } public P() { System.out.println("P constructor"); } } class Q extends P { static { System.out.println("Q static block"); } public Q(){ System.out.println("Q constructor"); } } class S extends Q { static { System.out.println("S static block"); } public S() { System.out.println("S Static block"); } }
足をつないでfinalの注意点を書きます:finalが原生データ型を修飾する時、その原生データ型の値が変化できないことを表します;finalが参照タイプを修飾すると、参照タイプが他のオブジェクトを指すことはできませんが、参照が指すオブジェクトの内容は変更できます.
finalタイプのメンバー変数には、一般的に2つの初期値を割り当てる方法があります.
*****finalタイプのメンバー変数を宣言するときに初期値を付与*****finalタイプのメンバー変数を宣言するときに初期値は付与されませんが、クラスのすべての構築方法で初期値が付与されます.