2013-12-09 67 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 

是正確