Java 陣列的本質是一個Java類,它是透過new語句來例項化,但是這個new語句卻不會例項化陣列中的物件,我們對它的理解有些偏差。
對於基本型別的陣列,在new語句建立陣列例項時,會為該陣列分配指定長度的記憶體空間,並把陣列的每個元素的初始化為0。那麼,
引用型別的陣列又是如何來建立和初始化這些記憶體空間的?
其實,引用資料型別的陣列也會分配指定長度的記憶體空間,只不過這些記憶體空間是用來儲存引用的,而不是具體的值,它的初始化值為null。
以上程式碼中,建立了一個Object陣列,長度為5,這5個元素的值都是null,然後把建立好的陣列例項的引用賦給obj變數。如果需要為這些元素分配具體的物件,則需要分別指定或用{}符號進行初始化,如下所示:
或
以上陣列例項的記憶體構成,如圖:
總結:
答案為否。其實是
建立了一個數組例項,長度為5
,每個陣列元素的值均為null,並沒有建立5個Object物件。如果需要建立5個Object物件,則需要為每個陣列元素分別指定或用符號{}。
最近面試BAT,整理一份面試資料《
Java面試BATJ通關手冊
》,覆蓋了Java核心技術、JVM、Java併發、SSM、微服務、資料庫、資料結構等等。
文章有幫助的話,在看,轉發吧。
謝謝支援喲 (*^__^*)