1. 程式人生 > >java中構造程式碼塊、static程式碼塊和區域性程式碼塊的區別

java中構造程式碼塊、static程式碼塊和區域性程式碼塊的區別

先上程式碼:

class StaticCode{
    int age;
    // static程式碼塊
    static{
        System.out.println("static程式碼塊");
    }
    //構造程式碼塊
    {
        System.out.println("構造程式碼塊 55 ");
    }    
    // 建構函式
    StaticCode(int age){
        this.age=age;
        System.out.println("StaticCode方法 age="+age);
    }
    void
show(){ // 區域性程式碼塊 { int age=30; } System.out.println("show() age="+age); } } class StaticCodeDemo{ public static void main(String[] args){ StaticCode p1=new StaticCode(20); System.out.println("---------"); p1.show(); System.
out.println("---------"); StaticCode p2=new StaticCode(20); } }

輸出:

static程式碼塊 構造程式碼塊 55 StaticCode方法 age=20 --------- show() age=20 --------- 構造程式碼塊 55 StaticCode方法 age=20

分析:

  1. 先執行StaticCode這個類,static程式碼塊
  2. 建立p1物件,執行構造程式碼塊,構造程式碼塊 55
  3. 執行建構函式初始化,StaticCode age=20
  4. 執行p1.show(),show() age=20
  5. 建立p2物件,執行構造程式碼塊,構造程式碼塊 55
  6. 執行建構函式初始化,StaticCode age=20

結論:

  1. static 程式碼塊隨著類的載入,只加載一次。作用是初始化類。
  2. 構造程式碼塊,可以給所有物件進行初始化的。建立幾個物件就呼叫幾次,是給物件進行通用性的初始化。
  3. 建構函式是給對應的物件進行鍼對性的初始化。
  4. 區域性程式碼塊限定函式中變數的生命週期,age=30區域性程式碼執行完。自動釋放掉了。