選單

Java 陣列中new Object[5]語句是否建立了5個物件?

Java 陣列的本質是一個Java類,它是透過new語句來例項化,但是這個new語句卻不會例項化陣列中的物件,我們對它的理解有些偏差。

對於基本型別的陣列,在new語句建立陣列例項時,會為該陣列分配指定長度的記憶體空間,並把陣列的每個元素的初始化為0。那麼,

引用型別的陣列又是如何來建立和初始化這些記憶體空間的?

其實,引用資料型別的陣列也會分配指定長度的記憶體空間,只不過這些記憶體空間是用來儲存引用的,而不是具體的值,它的初始化值為null。

以上程式碼中,建立了一個Object陣列,長度為5,這5個元素的值都是null,然後把建立好的陣列例項的引用賦給obj變數。如果需要為這些元素分配具體的物件,則需要分別指定或用{}符號進行初始化,如下所示:

以上陣列例項的記憶體構成,如圖:

Java 陣列中new Object[5]語句是否建立了5個物件?

總結:

答案為否。其實是

建立了一個數組例項,長度為5

,每個陣列元素的值均為null,並沒有建立5個Object物件。如果需要建立5個Object物件,則需要為每個陣列元素分別指定或用符號{}。

最近面試BAT,整理一份面試資料《

Java面試BATJ通關手冊

》,覆蓋了Java核心技術、JVM、Java併發、SSM、微服務、資料庫、資料結構等等。

文章有幫助的話,在看,轉發吧。

謝謝支援喲 (*^__^*)