2010-02-03 61 views

回答

8

否,第一個使陣列空的每一個元素,該陣列的長度仍然將爲array.length,第二將設置數組變量爲空。

0

沒有。

在第一種情況下,您將數組中的所有引用設置爲null。

在第二種情況下,您將數組本身的引用設置爲null。

17

一個小片段,以示區別:

// declare a array variable that can hold a reference. 
String [] array; 

// make it null, to indicate it does not refer anything. 
array = null; 

// at this point there is just a array var initialized to null but no actual array. 

// now allocate an array. 
array = new String[3]; 

// now make the individual array elements null..although they already are null. 
for(int i=0;i<array.length;i++) 
{ 
    array[i] = null; 
} 
// at this point we have a array variable, holding reference to an array, 
// whose individual elements are null. 
+0

的第一條語句'陣列= NULL之後;'你的​​聲明「......只是一個字符串的引用......」是不太正確的。這確實是一個可以容納參考的變量,但沒有參考。 – 2010-02-03 04:15:14

+0

@Kevin:謝謝:) – codaddict 2010-02-03 04:40:32

+0

+1:很好的回答 – 2010-10-03 18:07:48

5

不,這是不一樣的。

作爲事實上,對於第一個代碼段,以正確運行,數組變量應該被聲明和初始化像這樣(舉例來說)

Object[] array = new Object[5]; 

這產生與每個5個元素的數組元素具有null值。

一旦你有了這個,你正在做的是分配一個空值到每個array[i]元素是什麼的第一個例子。 array不會是null。所以你應該有這樣的事情。

陣列 - >

  • 陣列[0] - >空
  • 陣列[1] - >空
  • 陣列[2] - >空
  • 陣列[3] - >空
  • 陣列[4] - >空

這樣做array = null你說該數組不再引用那是一組元素。現在你應該有

array - > null

-1

他們倆都不行!如果你有一個整數數組,你試圖讓一個元素空你不能做 改編[我] = NULL; ,因爲整數不能轉換爲空。