2013-10-08 98 views
0

我有一個簡單的問題,我似乎沒有找到答案。我認爲這很簡單,我可以把它當作語言怪癖。數組初始化零與分配零點

int[] newArray=new int[5]; 

將初始化一個數組,並在所有5個位置全部爲零。

newArray[4]=0; 
//versus not assigning any value to specific position newArray[4] 

是兩樣嗎?如果不是,如何區分這兩者?

如何區分在創建數組時自動放置的零與在某個點在程序中分配的零之間的區別?

我問這個問題的主要原因是我有一個程序,它可以在數組中隨機的位置賦予一些整數值,也可以是0.在搜索時,我想知道哪些零是由程序分配的,哪些是初始化的零。

+3

結果是一樣的。全部0都是相同的。 – Thilo

+1

除了那討厭的負面0 –

回答

2

由於您將int s放入您的陣列中,因此它們是相同的,因爲默認值int是。您將無法區分這兩者,因爲等於。

如果您使用Integer但是該陣列將被初始化爲null s。在這種情況下,您可以判斷是否設置了值。

如果你想能夠區分你可以使用的參考。

1

int[] newArray=new int[5]默認情況下會將所有元素初始化爲0。

newArray[4]=0會將第5個元素的值設置爲0.其他所有元素的默認值都是默認值。所以兩者沒有區別。

改爲了解該集合newArray[4]=10

現在數組內容{0,0,0,0,10}

1

爲什麼這麼說怪癖?很明顯,每個引用和原語在Java中都有一個初始默認值。對於int,它是0。對於參考,它是null

0

如果您將變量作爲類的成員實例化,則它將具有默認值:0表示數字,null表示對象。但是如果你在一個方法中聲明瞭這個變量,編譯器不會爲這個變量賦一個默認值,所以它的內容被設置爲undeffded,直到你設置它爲止。

所以,如果你在一個方法裏面做,是不等價的;-)

+0

所以,int [] newArray = new int [5];裏面的方法將離開所有的位置未定義! –