gpt4 book ai didi

java - Java中的数组声明和初始化。数组的行为不同,当它们的下标索引的位置在它们的声明中改变时

转载 作者:IT老高 更新时间:2023-10-28 20:53:40 26 4
gpt4 key购买 nike

以下是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[][][][];

最佳答案

JLS on Arrays :

The [] may appear as part of the type at the beginning of the declaration, or as part of the declarator for a particular variable, or both.

Brackets are allowed in declarators as a nod to the tradition of C and C++. The general rules for variable declaration, however, permit brackets to appear on both the type and in declarators, so that the local variable declaration:

float[][] f[][], g[][][], h[];  // Yechh!

is equivalent to the series of declarations:

float[][][][] f;
float[][][][][] g;
float[][][] h;

例如:

int []p, q[];

只是

int[] p, q[]

事实上

int p[]; int q[][]

其余的都差不多。

关于java - Java中的数组声明和初始化。数组的行为不同,当它们的下标索引的位置在它们的声明中改变时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16752689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com