5.1JAVA基礎複習——JAVA中的靜態代碼塊、構造代碼塊、構造函數、局部代碼塊區別

構造代碼塊:
  在類中定義能夠給全部對象進行初始化。
局部代碼塊:
  在方法中定義屬性的生命週期。
靜態代碼塊:
  在類中定義用於給類調用時屬性的初始化函數

構造函數與構造代碼塊的區別:
  構造函數是給對應的對象進行鍼對性的初始化。
  構造代碼塊是給全部對象進行初始化spa

代碼以下:code

public class Demo {
    private static  int age;
    private static  String name;
    //靜態代碼塊:給類的屬性進行初始化
    static{
        age = 10;
        name = "旺財";
    }
    //構造代碼塊:給全部的對象初始化定義在類中方法外。
    {
        show();
    }
    public Demo(int age,String name){//有參構造函數
        Demo.age =age;
        Demo.name = name;
    }
    public Demo(){//無參構造函數
        
    }
    public void show(){ //普通函數
        //局部代碼塊:定義屬性的生命週期
        {
            char sex = '男';//變量sex出了{}後就會被銷燬
            System.out.println("sex="+sex);
        }
        Demo.name = "張三";
    }
    public static void main(String[] args) {
        /*當有靜態代碼塊構造代碼塊構造函數時程序執行流程
         * 1.類被調用或建立實例時會執行靜態代碼塊進行初始化執行後age=10 name=旺財。
         * 2.建立實例會執行構造代碼塊調用show方法執行後sex = 男 ,age不變,name = 張三。
         * 3.調用有參構造函數傳入參數執行後age = 50,name=姚明。
         * 執行順序爲:
         * 一、靜態代碼塊 :給類的屬性進行初始化。
         * 二、構造代碼塊:給全部的對象進行初始化。
         * 三、有參或無慘構造(根據實例來定):給指定的對象進行初始化。
         * 結果爲:sex=男 注意這個是在構造代碼塊中輸出的
         *          50    姚明
         * */
        Demo d = new Demo(50,"姚明");
        System.out.println(d.age+"\t"+d.name);
    }
}
相關文章
相關標籤/搜索