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


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

 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)> 執行無參構造器內部代碼(輸出了“無參構造器執行”)> 結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM