Java中的对象数组是否具有默认值?

Bil*_*son 4 java arrays

如果我构建:

Object[][] guy = new Object[5][4];
Run Code Online (Sandbox Code Playgroud)

我的数组中的斑点有默认值吗?他们是空的吗?

有没有办法为数组中的每个点分配默认值?

Phi*_*ler 10

是的,新数组中的字段在Java中初始化为null.

您可以使用该方法Arrays.fill()填充具有特定值的数组中的所有字段.

如果你有一个短长度的数组,你静态知道要放什么,你可以使用数组初始化器:

Object[][] guy = { { obj1, obj2, null, obj3 }, { ... }, ... };
Run Code Online (Sandbox Code Playgroud)

你必须为所有字段输出完整的数组(在你的情况下为20),所以如果你想在每个地方放置相同的值,fill()可能会更方便.

btw的原始类型的数组.使用0的各种变体初始化,并使用false布尔数组(只要不使用初始化程序).对于数组初始化规则是相同的字段的初始化,可以发现这里的Java语言规范.


Sea*_*man 8

现有答案都是正确的,但在您的特定示例中有一点要添加.尽管参考数组默认为null,但多维数组具有隐含地创建的第一维.

例如,在您的情况下,第一个维度不为null,但实际上将指向另一个数组:

Object[][] guy = new Object[5][4];
System.out.println(guy[0]);
--> Output will be [Ljava.lang.Object;@5e743399
Run Code Online (Sandbox Code Playgroud)