为什么这个Java数组被认为是二维的?

时间:2009-07-18 21:31:20

标签: java arrays

考虑以下代码:

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;

是责备,但为什么只有一组括号被写入时才使数组成为二维数?我发现这种语法不清楚和混淆。

5 个答案:

答案 0 :(得分: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;

或者正如你所说,简单地将它们放在不同的行上也会起作用(并且更容易阅读)。

答案 1 :(得分:5)

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


......等于:

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

你必须这样做:

int[] a = null , b =null;

答案 2 :(得分:3)

除了其他答案,Java没有多维数组。 Java具有任何类型的数组。这种“任何类型”本身可以是一个数组。多维数组虽然微妙,却截然不同。

答案 3 :(得分:2)

如果你拿出a声明,这就是你所拥有的:

int[] b[] = null;
不幸的是,

的合法替代品
int[][] b = null;

答案 4 :(得分:1)

我一直认为,在b之后允许[]的语法只适用于那些会感觉更有家的C语言人群。不幸的是,它有副作用,允许混淆声明,如

 int[] b[];

最终与

相同
 int[][] b;