a) int i[] = new int[2]{1,2};
b) int[] i = new int[]{1,2,3}{4,5,6};
我知道我们不能在声明时给出数组的大小。但是在声明(a)中我们给出了初始化的大小。那么声明(a)如何非法,声明(b)在java中是合法的
答案 0 :(得分:3)
int i1[] = new int[]{1,2};
int[][] i2 = new int[][]{{1,2,3},{4,5,6}};
答案 1 :(得分:3)
int i1 [] = new int [2] {1, 2}; // Invalid
int i2 [] = new int [] {1, 2}; // Valid
int [] i3 = new int [][] {1, 2, 3} {4, 5, 6}; // Invalid
int [][] i4 = new int [][] {new int [] {1, 2, 3}, new int [] {4, 5, 6}}; // Valid
答案 2 :(得分:1)
为什么不参考Java语言规范?
JLS 15.10 - 数组创建表达式
ArrayCreationExpression:
new PrimitiveType DimExprs Dimsopt
new ClassOrInterfaceType DimExprs Dimsopt
new PrimitiveType Dims ArrayInitializer
new ClassOrInterfaceType Dims ArrayInitializer
DimExprs:
DimExpr
DimExprs DimExpr
DimExpr:
[ Expression ]
Dims:
[ ]
Dims [ ]
请注意,这意味着带有初始值设定项的数组创建表达式只能有空括号。
数组初始值设定项在10.6中定义
ArrayInitializer:
{ VariableInitializersopt ,opt }
VariableInitializers:
VariableInitializer
VariableInitializers , VariableInitializer
The following is repeated from §8.3 to make the presentation here clearer:
VariableInitializer:
Expression
ArrayInitializer
答案 3 :(得分:1)
两者都是非法的!
a)您可以指定大小或内容。 法律将是:
int i[] = new int[2];
i[0] = 1;
i[1] = 2;
或
int i[] = new int[]{1,2};
b)二维数组是包含数组的数组。所以,你必须写:
int[] i = new int[][]{{1,2,3}, {4,5,6}};
^ ^ ^
答案 4 :(得分:0)
a)提供数组初始化程序时无法定义维表达式 int i [] = new int [2]; b)令牌上的语法错误,错放的构造(s) int [] j = new int [] {1,2,3};