1. 程式人生 > >java有參無參構造器的的執行順序

java有參無參構造器的的執行順序

color HR throw static data pri spa exce bject

這裏拿了用數組構造棧的一段代碼說明一下

 1 public class StackArray<E> {
 2 
 3     private Object[] data = null;
 4     private int maxSize; //棧容量
 5     private int top = -1; //棧頂指針
 6     
 7     /**
 8      * 重寫無參構造函數
 9      */
10     StackArray(){
11         this(10); //默認棧大小為10 (如果這行前面有代碼,這行就會報錯)
12         System.out.println("無參構造器執行");
13 } 14 15 /** 16 * 有參構造函數 17 */ 18 StackArray(int initialSize){ 19 if(initialSize >= 0){ 20 this.maxSize = initialSize; 21 data = new Object[initialSize]; 22 top = -1; 23 }else{ 24 throw new RuntimeException("初始化大小不能小於0:" + initialSize);
25 } 26 System.out.println("有參構造器執行"); 27 } 28 29 public static void main(String[] args) { 30 new StackArray(); 31 //new StackArray(20); 32 } 33 }

1)new StackArray()即無參的實例化過程:

找到無參構造器 > 初始化成員變量(引用類型初始化為null,int初始化為0) > this(10)調用有參構造器 > 來到有參構造器並初始化賦值形參(initialSize=10)> 成員變量賦值(例如top=-1)> 執行有參構造器內部代碼(輸出了“有參構造器執行”)> 執行無參構造器內部代碼(輸出了“無參構造器執行”)> 結束

2)new StackArray(20)有參的實例化過程:

找到有參構造器 > 初始化賦值形參並初始化成員變量(引用類型初始化為null,int初始化為0) > 成員變量賦值(例如top=-1)> 執行有參構造器內部的代碼 > 結束

3)如果無參構造器內沒有調用有參構造器,new StackArray()的實例化過程:

找到無參構造器 > 初始化成員變量(引用類型初始化為null,int初始化為0) > 成員變量賦值(例如top=-1)> 執行無參構造器內部代碼(輸出了“無參構造器執行”)> 結束

java有參無參構造器的的執行順序