Javaの初期化は、各コードブロックの運転手順についてです。

1116 ワード

最近は多くのこの方面の問題に出会いました。最初にこれを見たのは無頓着な顔をしていました。以前はこの知識点については経験がありませんでした。
          先にコードを付けます:
//  
class A{
	
	//     
	static {
		System.out.println("        ");
	}
	
	//     
	{
		System.out.println("        ");
	}
	
	//    
	public A() {
		System.out.println("       ");
	}
}

//  
class B extends A{
	//     
	static {
		System.out.println("        ");
	}
	
	//     
	{
		System.out.println("        ");
	}
	
	//    
	public B() {
		System.out.println("       ");
	}
}

public class TestOrder {
	public static void main(String[] args) {
		new B();
	}
}
実行結果:
        
        
        
       
        
       
     コードでこの順序が一目で分かります。 その下の原理は、Javaコードが実行される時に、コンパイラによってコンパイルされます。classファイル(自分で自分のjavaファイルbinフォルダを見てもいいです。)は、JVM(java仮想マシン)に入れて実行されます。クラスの初期化過程では、クラスの静的なコードブロックが優先的に実行されます。名前の通り、コンストラクタとは必ず関係があります。コンストラクタを構成するのはコンストラクタに依存します。コードブロックを作るのはオブジェクトを作成するたびに一回だけ実行します。コンストラクタより優先します。その結果の順序は以下の通りです。
静的コードブロック-->コードブロックを構築する——>構造関数
    子類の作成は親(親がいない、どこから来た子供)に依存していますので、子類を作る前に、父類を作成して、最後に結果を示します。