考虑以下代码:
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;
是责备,但为什么只有一组括号被写入时才使数组成为二维数?我发现这种语法不清楚和混淆。
答案 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;