为什么这样做有效:
int[] array = {1, 2, 3};
但这不是:
int[] array;
array = {1, 2, 3};
如果我有一个数组实例变量,我想在我的构造函数中初始化它肯定我不必去
array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
我觉得我在这里错过了一些东西?
答案 0 :(得分:13)
文字语法即{}
只能在声明期间初始化时使用。
在其他地方,您可以执行以下操作:
int[] array;
array = new int[] {1, 2, 3};
答案 1 :(得分:5)
此处的{...}
构造在Java中称为数组初始值设定项。这是一种特殊的速记,仅适用于某些语法结构:
JLS 10.6 Array Initializers
数组初始值设定项可以在声明中指定,也可以作为数组创建表达式的一部分指定,创建数组并提供一些初始值值。 [...]数组初始化程序编写为逗号分隔的表达式列表,用大括号
"{"
和"}"
括起来。
如指定的那样,您只能在声明或数组创建表达式中使用此简写。
int[] nums = { 1, 2, 3 }; // declaration
nums = new int[] { 4, 5, 6 }; // array creation
这就是以下不编译的原因:
// DOES NOT COMPILE!!!
nums = { 1, 2, 3 };
// neither declaration nor array creation,
// array initializer syntax not available
另请注意:
以下是一个例子:
int[][] triangle = {
{ 1, },
{ 2, 3, },
{ 4, 5, 6, },
};
for (int[] row : triangle) {
for (int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
以上版画:
1
2 3
4 5 6
java.util.Arrays
- 有许多与数组相关的实用工具方法,例如equals
,toString
等答案 2 :(得分:4)
{}
是语法糖,允许您在初始化时使用值填充数组。
答案 3 :(得分:4)
你也可以这样做:
array = new int[]{1, 2, 3};
我不确定为什么有必要在一个版本的右侧指定类型,而不是在另一个版本中指定类型。
答案 4 :(得分:2)
用于初始化的curly braces {}只能在数组声明语句中使用。 您可以使用:
int[] array = new int[] {1,2,3}; // legal
但不是:
array = {1, 2, 3}; //illegal
答案 5 :(得分:0)
数组是一个参考。这意味着当你写array int[];
时,数组将等于null。
如果你想使用它,你需要先按array = new int[3]
分配数组,现在你可以填充它。
array[0] = 1;
array[1] = 2;
现在,java有两个语法糖用于填充数组。你可以写
arr int[] = {1,2,3}
或
arr int[] = new int[]{1,2,3}
Java将在场景后面分配并填充它,但这只有在减速时才可能。