int[]x[]在Java中如何成为合法的数组声明?
我知道int[]x[]在Java中如何成为合法的数组声明?,java,arrays,Java,Arrays,我知道 int[] []x[]; 类似的声明一个数组非常好,但是括号中的3个集合是如何工作的呢?下面是一个例子: int[] x; int x[]; int []x; 上面我们有一个二维数组。实际上,这是一个数组的数组。那么就这样宣布吧: int[][] array = new int[1][2]; 您仍然在声明一个数组数组,也称为二维数组。这意味着: int[] array[] = new int[1][2]; 与此相同: int[] []array[] = new int[1][2]
int[] []x[];
类似的声明一个数组非常好,但是括号中的3个集合是如何工作的呢?下面是一个例子:
int[] x;
int x[];
int []x;
上面我们有一个二维数组。实际上,这是一个数组的数组。那么就这样宣布吧:
int[][] array = new int[1][2];
您仍然在声明一个数组数组,也称为二维数组。这意味着:
int[] array[] = new int[1][2];
与此相同:
int[] []array[] = new int[1][2][3];
因为数组标识符(‘array’)后面的括号是为C程序员改编的,所以它们被视为位于标识符之前
希望这有帮助!:) 下面是一个例子:
int[] x;
int x[];
int []x;
上面我们有一个二维数组。实际上,这是一个数组的数组。那么就这样宣布吧:
int[][] array = new int[1][2];
您仍然在声明一个数组数组,也称为二维数组。这意味着:
int[] array[] = new int[1][2];
与此相同:
int[] []array[] = new int[1][2][3];
因为数组标识符(‘array’)后面的括号是为C程序员改编的,所以它们被视为位于标识符之前
希望这有帮助!:) 尽管下面的3个表示相同,但推荐使用第一个,因为
x
的类型是一个整数数组
int[][][] array = new int[1][2][3];
所以,另一个应该是:
int[] x; // Recommended
int x[];
int []x;
这是一个整数数组的数组
int[][][] array = new int[1][2][3];
根据其使用方式,可以将其视为三维阵列,例如,请参见
当然,实际上,Java没有多维数组。如前所述,它是整数数组的数组,每个子数组可能有不同的长度。但是这是一个较长的主题。尽管下面的3个表示相同的意思,但是第一个是推荐的,因为
x
的类型是一个整数数组
int[][][] array = new int[1][2][3];
所以,另一个应该是:
int[] x; // Recommended
int x[];
int []x;
这是一个整数数组的数组
int[][][] array = new int[1][2][3];
根据其使用方式,可以将其视为三维阵列,例如,请参见
当然,实际上,Java没有多维数组。如前所述,它是整数数组的数组,每个子数组可能有不同的长度。但这是一个较长的话题。它是合法的,因为它允许:
变量的数组类型取决于括号对,括号对可能作为变量声明开始时类型的一部分出现,或作为变量声明符的一部分出现,或两者都出现
(强调矿山)
简单地说就是int[]x[]
与int[]]x相同代码>
通常,我们应该避免混合放置[]
(甚至在变量名之后放置[]
)。在我看来,这是因为在Java中,我们习惯于将变量声明为
int[][][] x;
而不是
FullTypeDescription variableName
int[][] a, b[];
数组的数量和维度是类型信息的一部分,所以应该将它们分开
<>混合类型允许我们编写代码(让C或C++程序员迁移到java更容易):
而不是
FullTypeDescription variableName
int[][] a, b[];
但最后一种方式还是首选。它是合法的,因为它允许:
变量的数组类型取决于括号对,括号对可能作为变量声明开始时类型的一部分出现,或作为变量声明符的一部分出现,或两者都出现
(强调矿山)
简单地说就是int[]x[]
与int[]]x相同代码>
通常,我们应该避免混合放置[]
(甚至在变量名之后放置[]
)。在我看来,这是因为在Java中,我们习惯于将变量声明为
int[][][] x;
而不是
FullTypeDescription variableName
int[][] a, b[];
数组的数量和维度是类型信息的一部分,所以应该将它们分开
<>混合类型允许我们编写代码(让C或C++程序员迁移到java更容易):
而不是
FullTypeDescription variableName
int[][] a, b[];
但最后一种方法还是可取的。我未受过教育的猜测是声明一个由整数的二维数组组成的数组。任何人都不应该编写这种不可读的代码。我会说int x[];最不奇怪了。@duffymo推荐的方法是int[][]x
谢谢你的更正。我没有受过教育的猜测是声明一个int的二维数组。任何人都不应该编写这样不可读的代码。我会说int x[];最不奇怪了。@duffymo推荐的方法是int[][]x
谢谢您的更正。为什么推荐?为什么程序员在变量之后立即放置数组括号是有原因的?请参阅,在这里,它声明“在声明符中允许括号作为C和C++传统的点头”。正如我在回答中所说,[]
使类型成为数组,因此将其与数组基类型(int
)放在一起是有意义的,例如,int[]x
是int[]
类型的变量x
。JLS部分还指出,“我们不建议在数组变量声明中使用“混合表示法”,其中括号出现在类型声明符和声明符中”,这就是OP所做的。为什么建议这样做?为什么程序员在变量之后立即放置数组括号是有原因的?请参阅,在这里,它声明“在声明符中允许括号作为C和C++传统的点头”。正如我在回答中所说,[]
使类型成为数组,因此将其与数组基类型(int
)放在一起是有意义的,例如,int[]x
是int[]
类型的变量x
。JLS部分还声明“我们不建议在数组变量声明中使用“混合表示法”,其中括号出现在类型和声明器中”,OP就是这么做的。再往下一点,链接的JLS说“我们不建议使用”混合表示法“在数组变量声明中,括号同时出现在类型声明符和声明符中”,因此它们实际上不鼓励同时使用int[]]x[]
和int[]]a,b[]
。再往下一点,链接的JLS说“我们不建议在数组变量声明中使用“混合表示法”,其中