【JAVA入門】Day13 - 代碼塊
文章目錄
- 【JAVA入門】Day13 - 代碼塊
- 一、局部代碼塊
- 二、構造代碼塊
- 三、靜態代碼塊
????????在 Java 中,兩個大括號 { } 中間的部分叫一個代碼塊,代碼塊又分為:局部代碼塊、構造代碼塊、靜態代碼塊三種。
一、局部代碼塊
????????寫在方法中的一對單獨大括號叫作局部代碼塊,它的作用是提前結束變量的生命周期。
????????變量 a 只能在局部代碼塊中使用,超出這個代碼塊的代碼,將會釋放 a 的內存。
public class CodeBlockDemo1 {public static void main(String[] args) {{int a = 10;}System.out.println(a); //報錯}
}
????????在上面的例子中,我們手動在 main 方法里添加了一個代碼塊,此時變量 a 在執行完右邊的大括號以后,就會直接從內存中消失,所以之后的 sout 語句報錯。
二、構造代碼塊
????????構造代碼塊可以在類的構造方法之前寫(成員位置),其內部的內容會在對象的構造方法創造之前優先執行。
public class Student {private String name;private int age;{System.out.println("開始創建對象了"); //優先輸出}public Student() {System.out.println("空參構造");}public Student(String name, int age) {System.out.println("有參構造");this.name = name;this.age = age;}
}
三、靜態代碼塊
????????靜態代碼塊使用 static 關鍵字。
- 格式:static{ }
- 特點:需要通過 static 關鍵字修飾,隨著類的加載而加載,并且自動觸發、只執行一次。
public class Student {private String name;private int age;//執行時機://隨著類的加載而加載,并且只執行一次。static {System.out.println("靜態代碼塊執行了");}public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
????????需要注意的是,如果要在靜態代碼塊中寫變量,那么變量也應該在外部聲明時用 static 修飾。
public class App {static ArrayList<User> list = new ArrayList<>();static {//添加一些用戶信息list.add(new User("zhangsan","1234qwer","11010120001011234","13112345678"))}
}
????????通過靜態代碼塊,可以給類中的變量賦予默認值(數據初始化),使其在創建時就已經有默認信息。