五:程式碼塊

櫻桃那個小丸子發表於2020-10-09

          在程式中使用“{}”定義的結構就稱為程式碼塊,而後根據程式碼塊出現的位置以及定義的關鍵詞的不同,程式碼塊可以分為:普通程式碼塊、構造程式碼塊、靜態程式碼塊和同步程式碼塊,其中對於同步程式碼塊會在多執行緒中進行講解。

1、普通程式碼塊

          普通程式碼塊的主要特點是定義在一個方法之中的程式碼塊

 程式碼分析特徵
普通程式碼塊

public static void main(String arg[]) {
        if (true) {
            int x = 10;
            System.out.println("x=" + x);
        }

        int x = 100;
        System.out.println("x=" + x);
    }

按照Java程式的開發標準規定相同名稱的變數是不能在同一個方法中存在,而此時通過“{}”進行劃分界限,則兩個相同變數可以同時存在,一個可以理解為區域性變數,一個可以理解為全域性變數(相對而言)。可以在一個方法中進行一些結構的拆分,以防止相同變數名稱所帶來的相互影響

2、構造程式碼塊

          構造塊是定義在一個類之中的。

          觀察構造塊:

 程式碼結果特徵
構造程式碼塊

package cn.demos;

class Person {
    public Person() {
        System.out.println("Person類構造方法執行");
    }

    {
        System.out.println("Person類構造塊執行");
    }

}

public class Demo2 {
    public static void main(String arg[]) {
        new Person();
        new Person();
        new Person();

    }
}
 

Person類構造塊執行
Person類構造方法執行
Person類構造塊執行
Person類構造方法執行
Person類構造塊執行
Person類構造方法執行

構造塊優先執行於構造方法;

每次物件例項化時,都會呼叫構造塊裡的程式碼。

3、靜態程式碼塊

          靜態程式碼塊主要指的是使用static關鍵字定義的程式碼塊,而靜態程式碼塊的定義需要區分兩種情況:

                    1)主類中定義靜態塊;

                    2)非主類中定義靜態塊。

 程式碼結果特徵
非主類定義靜態塊

package cn.demos;

class Person {
    public Person() {
        System.out.println("Person類構造方法執行");
    }

    static {
        System.out.println("非主類的靜態程式碼塊的執行");

    }

    {
        System.out.println("Person類構造塊執行");
    }
}

public class Demo2 {
    public static void main(String arg[]) {
        new Person();
        new Person();
        new Person();

    }
}
 

非主類的靜態程式碼塊的執行
Person類構造塊執行
Person類構造方法執行
Person類構造塊執行
Person類構造方法執行
Person類構造塊執行
Person類構造方法執行
此時我們可以發現靜態程式碼塊優先於構造程式碼塊的執行,且不管有多少個例項化物件,都只執行於一次;而靜態程式碼塊的主要目的是為了靜態初始化的實現。
主類中定義靜態塊

package cn.demos;

public class Demo2 {
    static {
        System.out.println("主類中的靜態程式碼塊");
    }

    public static void main(String arg[]) {
        System.out.println("我要執行");
    }
}
 

主類中的靜態程式碼塊
我要執行
 
主類中的靜態程式碼塊優先於主類進行

相關文章