1. 程式人生 > >Java 陣列中new Object[5]語句是否建立了5個物件?

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

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

   對於基本型別的陣列,在new語句建立陣列例項時,會為該陣列分配指定長度的記憶體空間,並把陣列的每個元素的初始化為0。那麼,引用型別的陣列又是如何來建立和初始化這些記憶體空間的?其實,引用資料型別的陣列也會分配指定長度的記憶體空間,只不過這些記憶體空間是用來儲存引用的,而不是具體的值,它的初始化值為null

Object[]obj=new Object[5];

以上程式碼中,建立了一個Object陣列,長度為5,這5個元素的值都是null,然後把建立好的陣列例項的引用賦給

obj變數。如果需要為這些元素分配具體的物件,則需要分別指定或用{}符號進行初始化,如下所示:

Object[]obj=new Object[]{new Object(),null,null,null,new String("123")};//引用型別的陣列

obj[0]=new Object();//陣列元素在賦物件引用

obj[4]=new String("123");

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


總結:

答案為否。其實是建立了一個數組例項,長度為5,每個陣列元素的值均為null,並沒有建立5Object物件。如果需要建立5Object物件,則需要為每個陣列元素分別指定或用符號{}