您的位置:首页技术文章
文章详情页

Java中的数组声明和初始化。当数组的下标索引的位置在声明中更改时,数组的行为将有所不同

【字号: 日期:2024-04-30 18:53:40浏览:87作者:猪猪
如何解决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[][][][];

标签: java