Java中的程式碼塊

scbiaosdo發表於2018-04-17

什麼是程式碼塊?

程式碼塊是一種常見的程式碼形式。他用大括號“{}”將多行程式碼封裝在一起,形成一個獨立的程式碼區,這就構成了程式碼塊。

1.區域性程式碼塊:

類中方法的方法體,給變數限定生命週期,區域性程式碼塊的變數在執行結束後會被Java回收。

2.構造程式碼塊:

構造塊會在建立物件時被呼叫,每次建立時都會被呼叫,優先於類建構函式執行。

3.靜態程式碼塊:

用static{}包裹起來的程式碼片段,只會執行一次。靜態程式碼塊優先於構造塊執行。

程式碼塊的演示

區域性程式碼塊:

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

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

構造程式碼塊:

直接在類中定義且沒有加static關鍵字的程式碼塊稱為{}構造程式碼塊。構造程式碼塊在建立物件時被呼叫,每次建立物件都會被呼叫,並且構造程式碼塊的執行次序優先於類建構函式。如果存在多個構造程式碼塊,執行順序由他們在程式碼中出現的次序決定,先出現先執行。

public class Test {
    {
        System.out.println("第一個構造塊");
    }
    public Test() {
        System.out.println("構造方法");
    }
    {
        System.out.println("第二個構造塊");
    }
}

靜態程式碼塊:

在java中使用static關鍵字宣告的程式碼塊。靜態塊用於初始化類,為類的屬性初始化。每個靜態程式碼塊只會執行一次。由於JVM在載入類時會執行靜態程式碼塊,所以靜態程式碼塊先於主方法執行。

如果類中包含多個靜態程式碼塊,那麼將按照"先定義的程式碼先執行,後定義的程式碼後執行"。

注意:

1.靜態程式碼塊不能存在於任何方法體內。
2.靜態程式碼塊不能直接訪問例項變數和例項方法,需要通過類的例項物件來訪問。
public class Test {
    // 靜態塊
    static {
        System.out.println("靜態程式碼塊");
    }
    // 非靜態塊
    {
        System.out.println("非靜態程式碼塊");
    }
}
可以看出:靜態塊總是最先執行的,並且只有在建立該類的第一個例項的時候才會執行一次;第二執行的是構造塊;第三執行的是構造方法。

相關文章