Java中的数组声明和初始化 当下标指数的位置在声明中发生变化时,数组的行为会有所不同
以下是Java中明显而通常的数组声明和初始化。
int r[], s[]; //<------- r=new int[10]; s=new int[10];
在声明语句中更改[]
的位置时,类似的情况会有所不同,如下所示。
int []p, q[]; //<------- p=new int[10]; q=new int[10][10];
请看宣言。 []
的位置已经从r[]
更改为[]p
。 在这种情况下,数组q
行为类似于int
types的数组(与之前的情况完全不同)。
问题:为什么q
,在这个声明中int []p, q[];
视为一个二维数组?
附加信息:
以下语法看起来不可思议。
int []a[];
然而,这符合罚款,只是行为像int a[][];
或者int [][]a;
。
因此,以下情况都是有效的。
int [][]e[][][]; int [][][][][]f[][][][];
看arrays上的JLS :
[]
可以作为声明开头的types的一部分出现,也可以作为特定variables声明的一部分出现。
和
在C和C ++的传统中,允许在声明符中使用括号。 然而,variables声明的一般规则允许括号出现在types和声明符中,以便局部variables声明:
float[][] f[][], g[][][], h[]; // Yechh!
相当于一系列的声明:
float[][][][] f; float[][][][][] g; float[][][] h;
举个例子:
int []p, q[];
只是
int[] p, q[]
这实际上是
int p[]; int q[][]
其余的都是相似的。
声明variables的理智方式是
type name
所以如果type是int[]
,我们应该写
int[] array
永远不要写
int array[]
这是胡言乱语(虽然这是合法的)