Java 數(shù)組中new Object[5]語句是否創(chuàng)建了5個對象?
來源:blog.csdn.net/qq_33642117/
article/details/52214403
Java 數(shù)組的本質(zhì)是一個Java類,它是通過new語句來實例化,但是這個new語句卻不會實例化數(shù)組中的對象,我們對它的理解有些偏差。
對于基本類型的數(shù)組,在new語句創(chuàng)建數(shù)組實例時,會為該數(shù)組分配指定長度的內(nèi)存空間,并把數(shù)組的每個元素的初始化為0。那么,引用類型的數(shù)組又是如何來創(chuàng)建和初始化這些內(nèi)存空間的?
其實,引用數(shù)據(jù)類型的數(shù)組也會分配指定長度的內(nèi)存空間,只不過這些內(nèi)存空間是用來保存引用的,而不是具體的值,它的初始化值為null。
Object[]obj=new?Object[5];
以上代碼中,創(chuàng)建了一個Object數(shù)組,長度為5,這5個元素的值都是null,然后把創(chuàng)建好的數(shù)組實例的引用賦給obj變量。如果需要為這些元素分配具體的對象,則需要分別指定或用{}符號進行初始化,如下所示:
Object[]obj=new?Object[]{new?Object(),null,null,null,new?String("123")};//引用類型的數(shù)組
或
obj[0]=new?Object();//數(shù)組元素在賦對象引用
obj[4]=new?String("123");
以上數(shù)組實例的內(nèi)存構(gòu)成,如圖:

總結(jié):
答案為否。其實是創(chuàng)建了一個數(shù)組實例,長度為5,每個數(shù)組元素的值均為null,并沒有創(chuàng)建5個Object對象。如果需要創(chuàng)建5個Object對象,則需要為每個數(shù)組元素分別指定或用符號{}。
1.?Java 8 一行代碼解決了空指針問題,太厲害了...
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點“在看”,關(guān)注公眾號并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)


