2013-12-09 45 views
3

2维数组以下是合法的数组声明:声明在Java中

int i[][]; 
int []j[]; 
int [][]k; 
int[][] l; 

但是,如果我们在单行声明数组我们,我们得到一个语法错误

int [] []i, []j[], k[], l[][]; 

ERROR: Syntax Error. 

为什么这种行为被显示?

回答

7

问题是在这里

int [] []i, []j[], k[], l[][]; 
      ^^ 

在Java中声明部分,之后你被允许使用后,新的额外的维度来声明新的变量,之前没有,所以

int a, b[], c[][]; 

是可能的,它与

int a; 
ing[] b; 
int[][] c; 

但是

int a, []b; 

不正确。

jls-8.3

多于一个字段更多可以在单个字段声明通过使用多于一个的说明符被声明; FieldModifiers和Type应用于声明中的所有声明符。

字段的声明类型由字段声明中出现的类型后跟,由声明器中的标识符后面的任何括号对表示。

附加信息在10.2. Array Variables

+0

哇,我不能相信'诠释的a,b [],C [] [];'是有效的语法。真恶心; – dimo414

+0

@ dimo414有时候它会很有用,而不是写'int a [] [] [],b [] [],c [] [] []''你可以直接写'int [] [] a [],b ,C []'。 – Pshemo

+0

叫我疯了,但这听起来没有用处。 – dimo414

2

可用我认为阵列符号 '[] []' 被连接到 'INT',所以 INT [] [] I,J,K,L 将工作

你做了什么样子

Object a, Object b, Object c; 

这是不正确

代替,

Object a; Object b; Object c; 

Object a, b, c 

是正确