Javaの静的ブロックと非静的ブロックについて


JAvaには、クラスを生成する前に初期化するための静的ブロックがよくあります.javaやC++言語のstaticにかかわらず、最初に初期化されます.構造は次のとおりです.
static {
静的文コードブロック
}
{
非静的文コードブロック
}
異同点
同じ点:JVMがクラスをロードするときに、構築メソッドが実行される前に実行されます.クラスでは複数定義できます.一般的に、いくつかのstatic変数はコードブロックに割り当てられます.    値を入力します.
異なる点:静的コードブロックは、非静的コードブロックの前に実行されます(静的コードブロック--"非静的コードブロック--"構築方法).
    静的コードブロックは、1回目のnewでのみ実行され、その後は実行されず、静的コードブロックがnew毎に1回実行されるのではない.非静的コードブロックは    一般的な方法で定義する(個人的な感覚はあまり役に立たない).静的コードブロックはできません.
 
package com.sample.client;
public class Test {
	public int a;
	
	static {
		System.out.println("Test Static      ");
	}
	public Test() {
		System.out.println("Test        ");
	}
	{
		System.out.println("Test    ");
	}
}
 
package com.sample.client;

public class Test1 extends Test {
	public int i;
	public double d;
	
	static {
		System.out.println("Test1 Static      ");
	}
	
	public Test1 () {
		System.out.println("Test1        ");
	}
	
	{
		System.out.println("Test1    ");
	}
	
	public static void main(String[] args) {
		Test1 t = new Test1();
		
	}
}

 
      :

Test Static      
Test1 Static      
Test    
Test        
Test1    
Test1        

 
まとめ:
1、静的コードブロックはクラスのロード時に自動的に実行され、非静的コードブロックはオブジェクトの作成時に自動的に実行されるコードであり、オブジェクトを作成せずにクラスの非静的コードブロックを実行しない.順序:静的コードブロック--』非静的コードブロック--』クラス構築方法.
2、静的メソッドでは、変数やメソッドを含む他の静的メンバーのみを直接呼び出すことができ、クラス内の非静的メンバーに直接アクセスすることはできません.静的でないメソッドと変数では、クラスのインスタンスオブジェクトを作成してから使用する必要がありますが、静的メソッドでは、使用前にオブジェクトを作成する必要はありません.
3、一部のコードがプロジェクトの起動時に実行しなければならない場合、静的コードブロックを採用することができます.このコードはアクティブに実行されます.プロジェクトの起動時に初期化する必要があり、オブジェクトを作成しない場合、他のプログラムが呼び出される場合は、静的メソッドを使用する必要があります.この場合、コードは受動的に実行されます.
違い:静的コードブロックは自動的に実行されます.
 静的メソッドは呼び出されたときに実行されます.
役割:静的コードブロックは、いくつかのプロジェクトで最も一般的な変数とオブジェクトを初期化するために使用できます.静的メソッドは、オブジェクトを作成せずに実行するコードとして使用できます.