Java実行順序静的コードブロック、コードブロックの非静的、静的メソッドやコンストラクタ

静的コードブロックの1:プロジェクトが開始したとき、いくつかのコードは、クラスがロードされるとき、静的コードブロックが実行され、一度だけ実行され、静的ブロックはクラス属性を実行するために使用される(このようなコードの実行がアクティブであり、実行されなければなりません初期化)

2つの静的メソッド:プロジェクトが始まったときに、オブジェクトを作成しなくても、このようなコードは、受動的(クラスのロード時間の静的メソッドは、クラス名がロードされている直接呼び出すことができます)が実行され、初期化する必要があります。

違いは:コードの静的ブロックが自動的に実行され、

それらが実行された時に静的メソッドのみが呼び出されます。

コードの静的ブロック、ローディングクラスが実行のためにロードされ、一度だけ実行される仮想マシン。

オブジェクトを作成するときに実行されるコードの非静的ブロック(つまり、新しいオブジェクトときである)、オブジェクトは、作成するたびに実行されます

この方法は、静的クラスの実行を作成せず、静的または非静的ブロック符号のブロックをもたらしません。

 

この方法は、静的クラスの実行を作成しないと、例えば、静的コード・ブロックまたはコードの静的ブロックをもたらしません。

パッケージcom.practice.dynamicproxy。

クラス親{
     静的文字列名=「こんにちは」
    { 
        のSystem.out.println( "親ブロック" )。
    } 
    静的{ 
        するSystem.out.println(「親静的ブロック」)。
    } 

    パブリック親(){ 
        System.out.printlnは( "親コンストラクタ" )。
    } 
    
} 

クラス子供延び親{
     静的 childName =「hello」を文字列
    { 
        System.out.printlnは( "子ブロック"); 
    } 
    静的{ 
        するSystem.out.println(「子静的ブロック」)。
    } 

    パブリック子供(){ 
        System.out.printlnは( "子コンストラクタ" )。
    } 
} 

パブリック クラスStaticIniBlockOrderTest {
     公共 静的 ボイドTEST1(){ 
        System.out.printlnは( "静的メソッド" )。
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){
 //         新しい子()。// 语句(*)
 //         新しい子();
        StaticIniBlockOrderTest.test1(); 
    } 
}

次のような結果の実装は以下のとおりです。

静的メソッド

 

次のようにサンプルコードの残りの部分は次のとおりです。

パッケージcom.practice.dynamicproxy。

クラス親{
     静的文字列名=「こんにちは」
    { 
        のSystem.out.println( "親ブロック" )。
    } 
    静的{ 
        するSystem.out.println(「親静的ブロック」)。
    } 

    パブリック親(){ 
        System.out.printlnは( "親コンストラクタ" )。
    } 
    
} 

クラス子供延び親{
     静的 childName =「hello」を文字列
    { 
        System.out.printlnは( "子ブロック"); 
    } 
    静的{ 
        するSystem.out.println(「子静的ブロック」)。
    } 

    パブリック子供(){ 
        System.out.printlnは( "子コンストラクタ" )。
    } 
} 

パブリック クラスStaticIniBlockOrderTest {
     公共 静的 ボイドTEST1(){ 
        System.out.printlnは( "静的メソッド" )。
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){
         新しい子供()。// 语句(*)
        新しい子();
//        StaticIniBlockOrderTest.test1(); 
    } 
}

次のような結果の実装は以下のとおりです。

親静的ブロック
子静的ブロック
の親ブロック
親コンストラクタ
子のブロックの
子コンストラクタ
親ブロック
親コンストラクタ
子のブロックの
子のコンストラクタ

説明:コードの静的ブロックが1回実行され、コードの二回非静的ブロック、最初のコードブロックと非静的行うコンストラクタ親クラス、クラスコードブロックと非静的コンストラクタのその後実装

おすすめ

転載: www.cnblogs.com/linwenbin/p/11084830.html