1. 概述

在Java中,布尔(Boolean)是一种基础数据类型。通常,它只有两种可能的值:truefalse

本教程将讨论如何初始化一个布尔值数组。

2. 问题介绍

问题相当简单:我们想要用相同的默认值初始化一个布尔变量数组。然而,Java有两种“不同”的布尔类型:原始类型(boolean)和封装类型(Boolean)。因此,在本文档中,我们将涵盖这两种情况,并讲解如何初始化booleanBoolean类型的数组。为了简化,我们将使用单元测试断言来验证数组初始化是否符合预期。

接下来,我们从原始类型的boolean开始。

3. 初始化原始boolean数组

在Java中,原始变量都有默认值。例如,原始int类型的变量默认值为0,而原始boolean类型的变量默认为false

因此,如果我们想用全false初始化一个boolean数组,只需创建数组而不设置值即可。

现在,让我们编写一个测试来验证这一点:

boolean[] expected = { false, false, false, false, false };
boolean[] myArray = new boolean[5];
assertArrayEquals(expected, myArray);

运行上述测试,它会通过。我们可以看到,boolean[] myArray = new boolean[5];boolean数组中初始化了五个false元素。

值得一提的是,当我们根据值比较两个数组时,应该使用assertArrayEquals()方法,而不是assertEquals()。这是因为数组的equals()方法检查的是两个数组的引用是否相同。

所以,初始化全为false的原始boolean数组很简单,我们可以利用boolean的默认值。然而,有时我们可能希望创建一个全为true的数组。在这种情况下,我们需要以某种方式将值设置为true。当然,我们可以逐个设置或使用循环。但是,Arrays.fill()方法让这个过程更轻松:

boolean[] expected = { true, true, true, true, true };
boolean[] myArray = new boolean[5];
Arrays.fill(myArray, true);
assertArrayEquals(expected, myArray);

再次运行测试,它会通过。于是,我们得到了一个全为true的数组。

4. 初始化封装Boolean数组

到目前为止,我们已经了解了如何用truefalse初始化原始boolean数组。现在,让我们看看在封装的Boolean类型上进行相同操作的情况。

首先,与原始boolean变量不同,封装的Boolean变量没有默认值。如果不为其赋值,其值将是null。因此,如果我们创建一个Boolean数组而不设置元素的值,所有元素都将为null。让我们编写一个测试来验证这一点:

Boolean[] expectedAllNull = { null, null, null, null, null };
Boolean[] myNullArray = new Boolean[5];
assertArrayEquals(expectedAllNull, myNullArray);

如果我们想用truefalse初始化Boolean数组,仍然可以使用Arrays.fill()方法:

Boolean[] expectedAllFalse = { false, false, false, false, false };
Boolean[] myFalseArray = new Boolean[5];
Arrays.fill(myFalseArray, false);
assertArrayEquals(expectedAllFalse, myFalseArray);
                                                                   
Boolean[] expectedAllTrue = { true, true, true, true, true };
Boolean[] myTrueArray = new Boolean[5];
Arrays.fill(myTrueArray, true);
assertArrayEquals(expectedAllTrue, myTrueArray);

运行上述测试,它会通过。

5. 总结

在这篇简短的文章中,我们学习了如何在Java中初始化booleanBoolean数组。如往常一样,所有示例的完整源代码可以在GitHub上找到。点击这里查看。