我們知道當使用new關鍵字創建一個對象的時候,會調用相應的構造函數對該對象進行初始化,那麼這個過程中到底都還有什麼事情呢?
先看一段代碼:
當執行語句:
Student stu = new Student("zhangsan",17);
執行該語句的時候在內存中程序都做了什麼事情,讓我們一一列舉出來:
1、因爲new用到了Student.class,所以會先找到Student.class文件並加載到內存中。
2、如果有的話,執行該類中的static靜態代碼塊,給Student.class類進行初始化。
3、在堆內存中開闢空間,分配內存地址。
4、在堆內存中建立對象的特有屬性,並進行默認初始化。
5、對屬性進行顯示初始化。
6、對對象進行構造代碼塊初始化。
7、對對象進行相應的構造函數初始化。
8、將內存地址賦給棧內存中的stu變量。