有人可以向我解释为什么以下导致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;
由于
答案 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
上找到很好的帮助
如果是上述示例,您只需声明10 BitSet
数组,因为BitSet
的defualt值为null
,因此它包含所有null
个引用
BitSet[] bitarray = new BitSet[10];
所以初始化你需要做的参考
bitarray[index] = new BitSet(SomeValue)
答案 4 :(得分:0)
只是因为你有一个包含10个空间的数组,并不意味着数组是填充。在工作示例中,您要设置一个值....