Java中的数组声明和初始化。当数组的下标索引的位置在声明中更改时,数组的行为将有所不同
看一下JLS onArrays:
的[]可能显示为在声明的开头所述类型的部分,或作为说明符用于特定变量,或两者的一部分。
和
声明符中允许使用括号来表示C和C ++的传统。但是,变量声明的一般规则允许括号同时出现在类型和声明符中,以便局部变量声明:
float[][] f[][], g[][][], h[]; // Yechh!
等效于一系列声明:
float[][][][] f;float[][][][][] g;float[][][] h;
因此,例如:
int []p, q[];
只是
int[] p, q[]
实际上是
int p[]; int q[][]
其余的都差不多。
解决方法以下是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(与前一种情况完全不同)。
问题: 为什么q在此声明int []p,q[];中将视为二维数组?
附加信息:
以下语法看起来很奇怪。
int []a[];
但是,这符合要求,并且行为类似于int a[][];或int [][]a;。
因此,以下情况都是有效的。
int [][]e[][][];int [][][][][]f[][][][];
