2013-10-24 55 views
0

我有這個數組Cards[] temp = new Cards[13];其中卡是一個有52個對象的類。據我所知,這個聲明將創建一個數組,其中包含13個卡數據類型的對象。我只是想知道在這個值之前什麼值是NULL的垃圾? 我的意思是寫雖然初始化一個對象數組什麼是默認值

Cards[] temp = new Cards[13]; 

後,並把這一聲明之後的實際值是什麼元素之前就存在。無論是空還是一些垃圾。更多的解釋是在編譯時13對象的內存將動態分配給數組或卡,我想知道在編譯時內存中的值是多少。空NULL或一些垃圾?

+0

你可以很容易地通過打印數組元素選中它。 –

+1

初始化爲NULL並且沒有垃圾。 – Ashish

回答

2

在Java中,如果未提供任何值,則所有對象引用都是initialized as null

Cards[] temp = new Cards[13]; 

在此行之後temp[0],temp [1] ....temp[12]值分配給null。

您需要像下面那樣創建對象。

for(int i=0;i<temp.length;i++){ 
     temp = new Cards(); 
} 
+0

對象*引用*被初始化爲null。 –

+0

@PeterWalser謝謝.....更新。 – Prabhakaran

5

它們被初始化爲空。他們不能是垃圾。

此外,該數組保存13個引用,而不是13個對象。你的問題的最後一部分我不明白。

1

當你說

Cards[] temp = new Cards[13];

就意味着你已經創建和數組名爲temp包含13個引用。這些參考可以指向13個卡片對象。另外,如果你有52個實例變量爲單個卡,它將全部設置爲空,因爲它們是實例變量。我希望我能很好地理解你的問題。

0

請參考官方文檔:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

節「默認值」:

byte 0 

short 0 

int  0 

long 0L 

float 0.0f 

double 0.0d 

char '\u0000' 

String (or any object)  null 

boolean  false 

這意味着,你的陣列中每個對象將有null默認值。沒有像其他語言的垃圾值,只有null

你可以自己試一試:

for (int i = 0; i < temp.length; i++) { 
    System.out.println(temp[i]); 
} 
相關問題