2012-09-24 109 views
1

有人可以向我解釋爲什麼以下結果爲空指針異常?以及如何爲bitarray [0]設置一個值?空指針例外與一組數組

 BitSet[] bitarray; 
     bitarray= new BitSet[10]; 
     bitarray[0].set(1); 

此外,爲什麼像這樣的工作,並沒有導致指針異常?

 BitSet[] bitarray = new BitSet[10]; 
    BitSet bits = new BitSet(32); 
    bits.set(1); 
    bitarray[0] = bits; 

感謝

回答

1

你可以找到Arrays Tutorial

Arrays

很好的幫助。在上面的例子中的情況下,如果你只需要聲明的10 BitSet陣列,因爲BitSet defualt值null所以它包含了所有null引用

BitSet[] bitarray = new BitSet[10]; 

所以初始化你需要做的參考

bitarray[index] = new BitSet(SomeValue) 
2

當初始化bitarray

bitarray = new BitSet[10]; 

它的10篇參考文獻,所有這些都是null的數組。您需要初始化每個參考,然後才能使用它。在第二種情況下,您將bits分配爲bitarray[0]的值。在第一種情況下,在撥打set()之前,您尚未向bitarray[0]分配任何東西。

1

bitarray= new BitSet[10];設置值爲null的10個索引。

第一種情況

bitarray[0]null。你沒有分配價值。這就是爲什麼NPE

第二種情況::

要設置值Bitset,然後將其分配給index 0

0

只是因爲你有一個十個東西的空間數組,並不意味着該數組是填充。在工作示例中,您正在設置一個值....

1

您已初始化bitarray但還必須分別初始化每個項目後;否則你所擁有的是一個10個空引用的數組。