Java常見程式碼塊的作用與區別
阿新 • • 發佈:2018-12-17
注意:程式碼塊中宣告的變數的作用域只在這個程式碼塊中
1. 區域性程式碼塊
作用在方法當中,作用是控制變數的生命週期:
public void show(){
{
System.out.println("區域性程式碼塊執行!");
}
}
在程式中當我們定義完成一個區域性變數x之後,並且在接下來的程式碼中,不想再用到它時,那麼就沒必要讓x在記憶體中繼續佔用空間。因此就有了區域性程式碼塊。
2. 構造程式碼塊
作用在類的定義Body中,作用是給類的部分欄位統一初始化:
public class Apple { private String size; //構造程式碼塊 { System.out.println("構造程式碼塊執行!"); size = "E"; } }
構造程式碼塊與建構函式的區別是:構造程式碼塊是給所有物件進行統一初始化,而建構函式是給對應的物件初始化,因為建構函式是可以多個的,執行哪個建構函式就會建立什麼樣的物件,但無論建立哪個物件,都會先執行相同的構造程式碼塊。也就是說,構造程式碼塊中定義的是不同物件共性的初始化內容。所以理所當然的,構造程式碼塊在建構函式之前執行。
3. 靜態程式碼塊
作用有兩個: (1)給類的靜態變數賦值; (2)宣告靜態變數;
作用在類的Body中,對類中的靜態變數初始化:
public class APP { static int x, y; // 靜態變數 static { x = 5; // 給靜態變數x賦值 } public static void myMethod() { y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值 } public static void main(String[] args) { x--; myMethod(); System.out.println(x + y + ++x); } } 輸出:23
注意,如果靜態程式碼塊中的程式碼改為:
static {
int x = 5; // 宣告一個靜態變數
}
則只是在宣告靜態變數,而且這個靜態變數的作用域只在這個程式碼塊中,而不是進行初始化,最後的輸出結果是3。