1.什麼是代碼塊
使用{}括起來的代碼被稱爲代碼塊,根據其位置和聲明的不同可以分爲下面4種:
1.局部代碼塊,在方法中出現,限定變量生命週期,及早釋放,提高內存利用率
2.構造代碼塊,在類中方法外出現;定義在類的成員位置,直接使用{ },在{}中寫代碼內容。每次調用構造都執行,並且在構造方法前執行
3.靜態代碼塊, 在類中方法外出現,並加上static修飾;用於給類進行初始化,在加載的時候就執行,並且只執行一次。一般用於加載驅動。
class Teacher {
static {
System.out.println("Teacher 靜態代碼塊");
}
{
System.out.println("Teacher 構造代碼塊");
}
public Teacher() {
System.out.println("Teacher 構造方法");
}
public void sayHello() {
{
System.out.println("這裏是普通代碼塊");
}
}
}
public class BlockTest {
static {
System.out.println("BlockTest靜態代碼塊");
}
public static void main(String[] args) {
System.out.println("main方法");
Teacher t1 = new Teacher();
Teacher t2 = new Teacher();
t1.sayHello();
t2.sayHello();
}
}
執行結果
BlockTest靜態代碼塊
main方法
Teacher 靜態代碼塊
Teacher 構造代碼塊
Teacher 構造方法
Teacher 構造代碼塊
Teacher 構造方法
這裏是普通代碼塊
這裏是普通代碼塊
結論:
(優先級從高到低)靜態代碼塊 > main方法 > 構造代碼塊 > 構造方法。
在主方法中定義的靜態代碼塊優先於主方法執行,在類中定義的靜態代碼塊優先於構造塊執行,
而且不管有多少個對象產生,靜態代碼塊只執行一次