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[][][][];
