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

时间:2010-03-02 16:39:49

标签: java arrays initialization

我有这段代码

public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;

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

6 个答案:

答案 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)

主要区别在于布尔是对象,布尔是原始

  • Object 的默认值为null;
  • 布尔值默认值为false;