2009-07-18 75 views
10

考慮以下代碼:這個Java數組爲什麼被認爲是二維的?

class arraytest { 

    public static void main(String args[]) { 

     int[] a = null , b[] = null; 

     b = a; 
     System.out.println(b); 

    } 

} 

b = a; 

是由編譯器標記說:

Incompatible types, found int[], required int [][] 

爲什麼爲B認爲二維?我實現了「快捷方式」的宣言

int[] a = null , b[] = null;

是難辭其咎的,但爲什麼它使數組二維時只有一組括號已經寫?我覺得這個語法不清楚和混淆。

回答

19

拿這個例子:

int a, b; 

然後a和b是整數,是吧?所以現在拿這個:

int[] a, b; 

a和b都是int數組。因此,通過添加另一組括號:

int[] a, b[]; 

添加另一組括號B的。

這些要麼會被罰款:

int[] a = null , b = null; 
int a[] = null , b[] = null; 

或者就像你說的,乾脆把他們在不同的行會工作過(並且更易於閱讀)。

+0

1,但對於int一個[] = NULL,B [] = NULL;會編譯得很好 – akarnokd 2009-07-18 21:35:49

5
int[] a = null , b[] =null; 


....這等於:

int[] a = null; 
int[][]b = null; 

你要做的:

int[] a = null , b =null; 
3

除了其他的答案,Java沒有多二維數組。 Java有任何類型的數組。這個「任何類型」本身可以是一個數組。儘管巧妙,但多維數組明顯不同。

2

如果取出a聲明,這是你擁有的一切:

int[] b[] = null; 

是,不幸的是,

int[][] b = null; 
1

我帶領相信法律的替代方案,語法讓b之後的[]完全適用於C語言的人羣,他們會感覺更加和家人在一起。不幸的是,它具有允許混淆聲明的像

int[] b[]; 

副作用這最終相同

int[][] b; 
相關問題