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行为类似于inttypes的数组(与之前的情况完全不同)。
问题:为什么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[]
这是胡言乱语(虽然这是合法的)