Javaコードブロック、Java実行シーケンス

2193 ワード

作者:云都小生
概要
Javaのコードブロックは4種類あり,通常のコードブロック,構築コードブロック,静的コードブロック,およびスレッド関連の同期コードブロックである.
これらのコードブロックには独自の用途があります.
一般コードブロック
一般的なコードブロック定義はメソッドで,「遭遇すれば実行する」という原則を奉行する.以下のように定義されています↓
public class Test {
    public static void main(String[] args) {
        int x;

        {
            x = 2;
            System.out.println("        1");
        }

        {
            x = 4;
            System.out.println("        2");
        }

        System.out.println(x);
    }
}

//    
//       1
//       2
//4

通常のコードブロックは、通常、フィールドを初期化するために使用されます.
コードブロックの構築
構築コードブロックはクラス内部、メソッド以外に定義され、staticで修飾されず、構文は通常のコードブロックと同じである.
public class CodeBlock
{       
    {
        System.out.println("     ");
    }

    CodeBlock(){
        System.out.println("    ");
    }
}

public class Test
{
    public static void main(String[] args) {
        CodeBlock codeBlock = new CodeBlock();

    }
}

//    
//     
//    

オブジェクトの作成後に呼び出される属性を初期化するために一般的に使用されるコードブロックを構築しますが、呼び出しの優先度は構築方法よりも速いです.
スタティツクコードブロック
静的コードブロックもクラスに定義されていますが、メソッドでは定義されていません.静的コードブロックは、コードブロックの構築、メソッドの構築よりも早く呼び出されます.オブジェクトを作成する前に、正確に言えば、JVMはクラスをロードするときに静的コードブロックを実行します.
public class CodeBlock 
{
    {
        System.out.println("     ");
    }

    {
        System.out.println("     ");
    }

    CodeBlock(){
        System.out.println("    ");
    }
}

public class Test
{
    public static void main(String[] args) {
        CodeBlock codeBlock = new CodeBlock();
    }
}

//    
//     
//     
//    

静的コードブロックは、通常、静的属性を初期化するために使用されます.
mainメソッドのあるクラスに静的コードブロックを置くと、静的コードブロックはmainメソッドよりも優先されます.
public class Test 
{
    static
    {
        System.out.println("     ");
    }

    {
        System.out.println("     ");
    }

    Test(){
        System.out.println("    ");
    }

    public static void main(String[] args) {
        System.out.println("   ");
        CodeBlock codeBlock = new CodeBlock();
    }
}

//     
//   
//     
//     
//    

2018/4/10 1:05:40@Author:雲都小生