2009-07-18 54 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; 
相关问题