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

and*_*and 10 java arrays

考虑以下代码:

class arraytest {

    public static void main(String args[]) {

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

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

    }

}
Run Code Online (Sandbox Code Playgroud)

这条线

b = a;
Run Code Online (Sandbox Code Playgroud)

由编译器标记:

Incompatible types, found int[], required int [][]
Run Code Online (Sandbox Code Playgroud)

为什么b被认为是二维的?我意识到"捷径"的宣言

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

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

Ric*_*dle 19

举个例子:

int a, b;
Run Code Online (Sandbox Code Playgroud)

然后a和b都是整数,对吗?所以现在拿这个:

int[] a, b;
Run Code Online (Sandbox Code Playgroud)

a和b都是int数组.所以通过添加另一组括号:

int[] a, b[];
Run Code Online (Sandbox Code Playgroud)

已经为b添加了另一组括号.

这两种情况都可以:

int[] a = null , b = null;
int a[] = null , b[] = null;
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*ieu 5

int[] a = null , b[] =null;
Run Code Online (Sandbox Code Playgroud)


....它等于:

int[] a = null;
int[][]b = null;
Run Code Online (Sandbox Code Playgroud)

你必须做 :

int[] a = null , b =null;
Run Code Online (Sandbox Code Playgroud)