int [] [] x []如何在Java中使用合法的数组声明?

时间:2016-01-24 00:49:17

标签: java arrays

int[] x;
int x[];
int []x;

我知道

\s*DROP\s+DATABASE\s+((`.+`|\w+)\.)(`.+`|\w+)\s+;

和类似声明一个数组完全没问题,但3个括号怎么设置呢?

3 个答案:

答案 0 :(得分:4)

这是合法的,因为Java Language Specification - 10.2. Array Variables允许它:

  

变量的数组类型取决于可能在变量声明的开头显示为类型的一部分的括号对,或者作为变量的声明符的一部分,或两者

(强调我的)

简而言之,int[] []x[];int[][][] x;相同。

通常我们应该避免混合使用[](甚至在变量名后面放置[])。 IMO是因为在Java中我们习惯将变量声明为

FullTypeDescription variableName 

而不是

SomeTypeInfo variable RestOfTypeInformation

和数组维数是类型信息的一部分,因此它应该是分开的。

允许混合类型让我们编写代码(让C或C ++程序员更容易地迁移到Java):

int[][] a, b[];

而不是

int[][] a;
int[][][] b;

但仍然是最后一种方式。

答案 1 :(得分:2)

虽然后面的3意思相同,但第一个是推荐的,因为x类型是一个整数数组。

int[] x;   // Recommended
int x[];
int []x;

所以,另一个应该是:

int[][][] x;

这是一个整数数组数组。

根据它的使用方式,它可以被认为是一个三维数组,例如见Fundamentals of Multidimensional Arrays

当然,实际上,Java并不具备多维数组。如上所述,它是整数数组的数组阵列,并且每个子阵列可以具有不同的长度。但这是一个较长的话题。

答案 2 :(得分:1)

以下是一个例子:

int[][] array = new int[1][2];

上面我们有一个二维数组。真的,它是一个数组。所以声明它是这样的:

int[] array[] = new int[1][2];

你仍在声明一个数组数组,也就是一个二维数组。这意味着:

int[] []array[] = new int[1][2][3];

与此相同:

int[][][] array = new int[1][2][3];

由于数组标识符('数组')之后的括号适用于C程序员,因此它们被视为位于标识符之前。

希望这有帮助! :)