1

次の結果がNullポインタ例外になる理由を誰かが私に説明できますか?そして、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;

ありがとう

4

5 に答える 5

2

で初期化bitarrayする場合

bitarray = new BitSet[10];

これは10個の参照の配列であり、すべてがnullです。使用する前に、各参照を初期化する必要があります。bits2番目のケースでは、の値をに割り当てていますbitarray[0]bitarray[0]最初のケースでは、を呼び出す前に何も割り当てていませんset()

于 2012-09-24T03:33:19.657 に答える
1

配列チュートリアルで素晴らしいヘルプを見つけることができます

配列

上記の例の場合、の10 BitSetdefualt値がでBitSetあるnullため、の配列を宣言すると、すべてのnull参照が含まれます

BitSet[] bitarray = new BitSet[10];

したがって、実行する必要のある参照を初期化します

bitarray[index] =  new BitSet(SomeValue)
于 2012-09-24T04:13:47.210 に答える
1

bitarray= new BitSet[10];値を使用して10個のインデックスを設定しますnull

最初のケース

bitarray[0]ですnull。あなたは価値を割り当てませんでした。それが理由ですNPE

2番目のケース::

に値を設定してからBitset、に割り当てindex 0ます。

于 2012-09-24T03:33:20.687 に答える
1

ビット配列を初期化しましたが、後で各項目を個別に初期化する必要もあります。それ以外の場合は、10個のnull参照の配列があります。

于 2012-09-24T03:35:03.747 に答える
0

10個のスペースがある配列があるからといって、配列に値が設定されているわけではありませ。作業例では、値を設定しています...。

于 2012-09-24T03:33:22.593 に答える