java 程式碼塊

jxaa0965發表於2022-11-15

程式碼塊

在java中用{}括起來的稱為程式碼塊,程式碼塊可分為以下四種:

  • 普通程式碼塊
  • 構造程式碼塊
  • 靜態程式碼塊
  • 同步程式碼塊

普通程式碼塊

在方法或語句中出現的{}就稱為普通程式碼塊。普通程式碼塊和一般語句的執行順序由他們在程式碼中出現的次序決定,先出現先執行。

普通程式碼塊一般過來限制變數的作用域,防止程式碼過多時可能產生的變數命名衝突。

示例:

public class testDemo {    public static void main(String[] args ) {
        {            int x = 3;            System.out.println("普通程式碼塊中的變數x=" + x);
        }        int x = 1;        System.out.println("主方法中的變數想=" + x);
        {            int y = 7;            System.out.println("普通程式碼塊中的變數y=" + y);
        }
    }
}

構造程式碼塊

在類中直接使用沒有任何修飾符的{}宣告的程式碼塊就是構造塊。

和建構函式的作用類似,都能對物件進行初始化,並且只要例項化一個物件,構造程式碼塊都會執行一次。

構造塊優先於建構函式執行,如果存在多個構造程式碼塊,則執行順序按照定義的順序依次執行。

示例:

public class testDemo {    public static void main(String[] args ) {
        Test t = new Test();
    }
}class Test{
    {        //構造程式碼塊
        System.out.println("構造程式碼塊1。");
    }    //建構函式
    public Test(){
        System.out.println("無參建構函式。");
    }
    {        //構造程式碼塊
        System.out.println("構造程式碼塊2。");
    }
}
輸出結果:
構造程式碼塊1。
構造程式碼塊2。
無參建構函式。

靜態程式碼塊

在java中使用static關鍵字宣告的程式碼塊。靜態塊用於初始化類,為類的屬性初始化。

靜態程式碼塊在類被載入的時候就執行了,而且 只執行一次,並且優先於各種程式碼塊以及建構函式。如果一個類中有多個靜態程式碼塊,會按照書寫順序依次執行。

一般情況下,如果有些程式碼需要在專案啟動的時候就執行,這時候就需要靜態程式碼塊。比如一個專案啟動需要載入的很多配置檔案等資源,我們就可以都放入靜態程式碼塊中。

示例:

public class testDemo {    public static void main(String[] args ) {
        Test t1 = new Test();
        System.out.println("**********");
        Test t2 = new Test();
    }
}class Test{   
    static {        //靜態程式碼塊
        System.out.println("靜態程式碼塊1。");
    }   
    //建構函式
    public Test(){
        System.out.println("無參建構函式。");
    }    
    static {        //靜態程式碼塊
        System.out.println("靜態程式碼塊2。");
    }  
}
輸出結果:
靜態程式碼塊1。
靜態程式碼塊2。
無參建構函式。
**********
無參建構函式。

同步程式碼塊

使用synchronized(){}包裹起來的程式碼塊,在多執行緒環境下,對共享資料的讀寫操作是需要互斥進行的,否則會導致資料的不一致性。同步程式碼塊需要寫在方法中。

程式碼塊執行順序

靜態程式碼塊 > 構造程式碼塊 > 建構函式

示例:

public class testDemo {    public static void main(String[] args ) {
        Test t = new Test();
    }
}class Test{
   
    {        //構造程式碼塊
        System.out.println("構造程式碼塊");
    }   
    //建構函式
    public Test(){
        System.out.println("建構函式");
    }    static {        //靜態程式碼塊
        System.out.println("靜態程式碼塊");
    }
    
}
輸出結果:
靜態程式碼塊
構造程式碼塊
建構函式


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019613/viewspace-2923460/,如需轉載,請註明出處,否則將追究法律責任。

相關文章