Java中的數(shù)組聲明和初始化。當(dāng)數(shù)組的下標(biāo)索引的位置在聲明中更改時(shí),數(shù)組的行為將有所不同
看一下JLS onArrays:
的[]可能顯示為在聲明的開(kāi)頭所述類型的部分,或作為說(shuō)明符用于特定變量,或兩者的一部分。
和
聲明符中允許使用括號(hào)來(lái)表示C和C ++的傳統(tǒng)。但是,變量聲明的一般規(guī)則允許括號(hào)同時(shí)出現(xiàn)在類型和聲明符中,以便局部變量聲明:
float[][] f[][], g[][][], h[]; // Yechh!
等效于一系列聲明:
float[][][][] f;float[][][][][] g;float[][][] h;
因此,例如:
int []p, q[];
只是
int[] p, q[]
實(shí)際上是
int p[]; int q[][]
其余的都差不多。
解決方法以下是Java中顯而易見(jiàn)的常用數(shù)組聲明和初始化。
int r[],s[]; //<-------r=new int[10];s=new int[10];
當(dāng)[]在聲明語(yǔ)句中更改的位置時(shí),非常相似的情況會(huì)有所不同,如下所示。
int []p,q[]; //<-------p=new int[10];q=new int[10][10];
請(qǐng)看報(bào)關(guān)單。的位置[]已從更改r[]為[]p。在這種情況下,該數(shù)組的q行為類似于一個(gè)類型為數(shù)組的數(shù)組int(與前一種情況完全不同)。
問(wèn)題: 為什么q在此聲明int []p,q[];中將視為二維數(shù)組?
附加信息:
以下語(yǔ)法看起來(lái)很奇怪。
int []a[];
但是,這符合要求,并且行為類似于int a[][];或int [][]a;。
因此,以下情況都是有效的。
int [][]e[][][];int [][][][][]f[][][][];
