標籤:代碼執行 AC cccccc body 代碼 靜態代碼塊 建構函式 order 變數
本文內容:
首發日期:2018-03-28
局部代碼塊:
局部代碼塊用於限制變數的生命週期,如果希望某些變數在某一過程之後直接失效而不希望被後面繼續操作時,可以使用局部變數來限制變數的生命週期帶局部代碼塊中
構造代碼塊:
- 建構函式只對對應的對象進行初始化,構造代碼塊給類的所有對象進行初始化。
- 由於構造代碼塊給類的所有對象進行初始化,所以對於每個對象都要初始化成一樣值的變數,可以防止構造代碼塊中初始化。
class Person{ String gender; int age; { //構造代碼塊 System.out.println("構造代碼塊運行階段"); gender="男"; } Person(){//建構函式 System.out.println("建構函式Person()運行階段"); } Person(int age){//建構函式 System.out.println("建構函式Person(int age)運行階段"); this.age=age; } }public class Demo { public static void main(String[] args) { Person p1=new Person(); System.out.println(p1.gender); Person p2=new Person(18); System.out.println(p2.gender); }}
上述代碼結果:
構造代碼塊運行階段建構函式Person()運行階段男構造代碼塊運行階段建構函式Person(int age)運行階段男
構造代碼塊的好處的例子:
建構函式版本:
構造代碼塊版本:
靜態代碼塊:
- 靜態代碼塊與構造代碼塊不同的是,它只執行一次,用於對整個類進行初始化,通常是對類變數進行初始化處理。
- 靜態代碼塊中只能修改類變數。
- 靜態代碼塊的執行比主函數要早。
- 有時候因為靜態代碼塊只執行一次。所以有時候會用來“顯示程式流程”。
class Person{ static String gender; int age; static { System.out.println("靜態代碼塊執行完成"); gender="男";//更改的變數只能是類變數 } Person(){//建構函式 System.out.println("建構函式Person()運行階段"); } Person(int age){//建構函式 System.out.println("建構函式Person(int age)運行階段"); this.age=age; }}public class Demo { public static void main(String[] args) { Person p1=new Person(); System.out.println(p1.gender); Person p2=new Person(18); System.out.println(p2.gender); }}
上述代碼執行結果:
靜態代碼塊執行完成建構函式Person()運行階段男建構函式Person(int age)運行階段男
補充:
- 各個初始化塊的運行順序:靜態代碼塊-》構造代碼塊-》構造方法
Java:構造代碼塊,靜態代碼塊