为什么这有效:
int[] array = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但这不是:
int[] array;
array = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
如果我有一个数组实例变量,我想在我的构造函数中初始化它肯定我不必去
array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
Run Code Online (Sandbox Code Playgroud)
我觉得我在这里错过了一些东西?
mis*_*tor 13
字面语法即{}只能在声明期间初始化时使用.
在其他地方,您可以执行以下操作:
int[] array;
array = new int[] {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
{...}这里的构造在Java中称为数组初始化器.这是一种特殊的速记,仅适用于某些语法结构:
JLS 10.6阵列初始化器
一个数组初始化可被指定在一声明,或作为部分数组创建表达式,创建一个数组并提供一些初始值.[...]数组初始化写为逗号分隔的表达式列表,括在大括号
"{"和"}".
如指定的那样,您只能在声明或数组创建表达式中使用此简写.
int[] nums = { 1, 2, 3 }; // declaration
nums = new int[] { 4, 5, 6 }; // array creation
Run Code Online (Sandbox Code Playgroud)
这就是以下不编译的原因:
// DOES NOT COMPILE!!!
nums = { 1, 2, 3 };
// neither declaration nor array creation,
// array initializer syntax not available
Run Code Online (Sandbox Code Playgroud)
另请注意:
这是一个例子:
int[][] triangle = {
{ 1, },
{ 2, 3, },
{ 4, 5, 6, },
};
for (int[] row : triangle) {
for (int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
以上打印:
1
2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
java.util.Arrays-有许多阵列相关的实用方法,如equals,toString等| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |