java中構造代碼塊、static代碼塊和局部代碼塊的區別


class StaticCode{
    int age;
    // static 代碼塊
    static{
        System.out.print("static ");
    }
    //構造代碼塊
    {
        System.out.print("55 ");
    }    
    // 構造函數
    StaticCode(int age){
        this.age=age;
        System.out.print(age+",");
    }
    void show(){
    // 局部代碼塊
        {
            int age=30;
        }
        System.out.print("show:"+age+",");
    }
}
class StaticCodeDemo{
    public static void main(String[] args){
        StaticCode p1=new StaticCode(20);
        p1.show();
        StaticCode p2=new StaticCode(20);
    }
} 

// 執行結果為:static,55,20,show,55,20
// 分析:
// 1、先執行StaticCode這個類,所以static
// 2、創建p1對象,執行構造代碼塊,55
// 3、執行構造函數初始化,20
// 4、執行p1.show(),show:20
// 5、 創建p2對象,執行構造代碼塊,55
// 6、執行構造函數初始化,20

// 總結: static 代碼塊隨着類的加載,只加載一次。作用是初始化類。
// 構造代碼塊,可以給所有對象進行初始化的。創建幾個對象就調用幾次,是給對象進行通用性的初始化。
// 構造函數是給對應的對象進行針對性的初始化。
// 局部代碼塊限定函數中變量的生命周期,age=30局部代碼執行完。自動釋放掉了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM