我有这段代码
public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;
有人可以告诉我这里到底出错了什么,我该怎么纠正呢?我只需要将所有数组元素初始化为Boolean false。 谢谢
答案 0 :(得分:264)
我只需要将所有数组元素初始化为Boolean false。
使用boolean[]
代替所有值默认为false
:
boolean[] array = new boolean[size];
或使用Arrays#fill()
用Boolean.FALSE
填充整个数组:
Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);
另请注意,数组索引基于零。您所在的freq[Global.iParameter[2]] = false;
行会导致ArrayIndexOutOfBoundsException
。要了解有关Java中数组的更多信息,请参阅this basic Oracle tutorial。
答案 1 :(得分:18)
分配数组时,数组将初始化为false。
Java中的所有数组都初始化为该类型的默认值。这意味着int的数组初始化为0,布尔数组初始化为false,引用类型数组初始化为null。
答案 2 :(得分:9)
Java中的数组开始索引为0.因此,在您的示例中,您指的是数组之外的元素。
应该像freq [Global.iParameter [2] -1] = false;
您需要循环遍历数组以初始化所有数组,此行仅初始化最后一个元素。
实际上,我很确定Java中的布尔值是默认值,因此您可能根本不需要进行初始化。
最好的问候
答案 3 :(得分:5)
默认情况下,它们会初始化为false
。在Java中,数组是在堆上创建的,并且数组的每个元素都根据其类型被赋予默认值。对于boolean
数据类型,默认值为false
。
答案 4 :(得分:2)
public static Boolean freq [] = new Boolean [Global.iParameter [2]];
Global.iParameter [2]:
它应该是const值
答案 5 :(得分:0)
主要区别在于布尔是对象,布尔是原始。