带有一组位集的空指针异常

时间:2012-09-24 03:32:11

标签: java nullpointerexception bitset

有人可以向我解释为什么以下导致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;

由于

5 个答案:

答案 0 :(得分:2)

使用

初始化bitarray
bitarray = new BitSet[10];

它是一个包含10个引用的数组,所有引用都是null 。您需要先初始化每个引用,然后才能使用它。在第二种情况下,您将bits指定为bitarray[0]的值。在第一种情况下,在致电bitarray[0]之前,您尚未向set()分配任何内容。

答案 1 :(得分:1)

bitarray= new BitSet[10];设置10个值为null的索引。

第一种情况

bitarray[0]null。你没有分配价值。这就是NPE

的原因

第二案例::

您要将值设置为Bitset,然后将其分配给index 0

答案 2 :(得分:1)

您已初始化 bitarray ,但之后还必须单独初始化每个项目;否则你拥有的是一个包含10个空引用的数组。

答案 3 :(得分:1)

您可以在Arrays Tutorial

上找到很好的帮助

Arrays

如果是上述示例,您只需声明10 BitSet数组,因为BitSet的defualt值为null,因此它包含所有null个引用

BitSet[] bitarray = new BitSet[10];

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

bitarray[index] =  new BitSet(SomeValue)

答案 4 :(得分:0)

只是因为你有一个包含10个空间的数组,并不意味着数组是填充。在工作示例中,您要设置一个值....