在java中初始化一个布尔数组

leb*_*lev 99 java arrays initialization

我有这个代码

public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里到底出错了什么,我该怎么纠正呢?我只需要将所有数组元素初始化为Boolean false.谢谢

Bal*_*usC 277

我只需要将所有数组元素初始化为Boolean false.

使用boolean[]相反,以便所有值默认为false:

boolean[] array = new boolean[size];
Run Code Online (Sandbox Code Playgroud)

或者使用Arrays#fill()与填充整个数组Boolean.FALSE:

Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);
Run Code Online (Sandbox Code Playgroud)

另请注意,数组索引基于零.该freq[Global.iParameter[2]] = false;行如你有会导致ArrayIndexOutOfBoundsException.要了解有关Java中数组的更多信息,请参阅此基本Oracle教程.

  • 当我们想要将它(将其设置)初始化为所有真值时,第二段代码是有益的.很棒的答案! (3认同)
  • 我宁愿反转变量名称并使用带有false值的默认初始化. (3认同)

Jør*_*ogh 19

分配数组时,数组将初始化为false.

Java中的所有数组都初始化为该类型的默认值.这意味着int的数组初始化为0,布尔数组初始化为false,引用类型数组初始化为null.

  • 他正在使用`Boolean`,而不是`boolean`,因此默认为`null`. (12认同)

Big*_*ian 9

Java中的数组从0开始索引.因此,在您的示例中,您指的是数组之外的元素.

它可能应该像freq [Global.iParameter [2] -1] = false;

您需要循环遍历数组以初始化所有数组,此行仅初始化最后一个元素.

实际上,我很确定Java中的布尔值是默认值,因此您可能根本不需要初始化.

最好的祝福

  • 他正在使用`Boolean`,而不是`boolean`,因此默认为`null`. (2认同)

cod*_*ict 5

它们将false默认初始化为.在Java中,数组是在堆上创建的,并且数组的每个元素都根据其类型被赋予默认值.对于boolean数据类型,默认值为false.

  • 他正在使用`Boolean`,而不是`boolean`,因此默认为`null`. (3认同)