java中構造程式碼塊、static程式碼塊和區域性程式碼塊的區別
阿新 • • 發佈:2018-12-10
先上程式碼:
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
分析:
- 先執行StaticCode這個類,static程式碼塊
- 建立p1物件,執行構造程式碼塊,構造程式碼塊 55
- 執行建構函式初始化,StaticCode age=20
- 執行p1.show(),show() age=20
- 建立p2物件,執行構造程式碼塊,構造程式碼塊 55
- 執行建構函式初始化,StaticCode age=20
結論:
- static 程式碼塊隨著類的載入,只加載一次。作用是初始化類。
- 構造程式碼塊,可以給所有物件進行初始化的。建立幾個物件就呼叫幾次,是給物件進行通用性的初始化。
- 建構函式是給對應的物件進行鍼對性的初始化。
- 區域性程式碼塊限定函式中變數的生命週期,age=30區域性程式碼執行完。自動釋放掉了。