雖然知道使用new可以創建對象,但一直不是很理解初始化和new等知識的具體。
通過8個問題和需求,了解相關知識。
了解問題和需求
1.new 的三個步驟
2.初始化是什么意思。
3.變量聲明后和變量賦值為null或變量調用了new的區別。
4.字段不是變量。
一、new的三個步驟:
1 在棧或者堆中開辟空間,空間的大小由類決定,進行內存空間指向。
2 在開辟的控件中進行創建對象
個人理解創建對象就是,在內存空間中存放字段,但是字段依然沒有進行數據存放的內存空間指向,雖然這個對象在內存中占了空間,但是沒有進行具體分配。
3 進行初始化。
二、初始化:
初始化就是調用構造函數,對所有的字段進行賦值,賦值為默認值。
引用類型為null。
值類型int為0,double為0.0。
個人理解:讓字段具有默認值后,進行了空間的分配,內存中存儲的就是對應的實際值,null表示我沒有進行具體的使用,但是我有存儲數據的空間。
三、變量聲明后和變量賦值為null或變量調用了new的區別。
主要區分函數中的變量和對象中的字段的區別。
3.1變量聲明后,沒有進行賦值的含義:
聲明未賦值,會無法生成,提示‘使用了未賦值的變量’。
通過Reflecter可以看到,聲明變量未賦值,實際是不存在的,那么就是說沒有進行分配內存。
3.2變量賦值為null
表明變量具有內存空間,但是內存中什么也不存在。
3.3變量調用new
變量中存在了對象也就是存在了字段,只是字段進行了賦值,賦值為默認值。
四、字段不是變量。
通過3和4感受一下變量和字段的區別。
變量存在函數中,字段是類的成員。
類中函數調用字段或者對應的屬性,只會出現為null的情況。
類中函數聲明變量,會出現無法編譯的情況。