说多维数组之前,说说简单的数组定义:

int[] a;

或者

int a[];

当然也可以一次性定义多个变量

int a[], b[],c[];

再简单不过了。

继续看看下面的呢

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

这是个几维数组? 恕我愚钝,尽管搞了这么多年java,还是第一次遇到这样的定义(因为工作中很少遇到这样的使用场景)。 先看看Java language specification 中对数组变量声明的定义.

type arrayName[][[]...];

type[][[]...] arrayName;

其实Java中的数组可以用矩阵来表示,比如 int[][] a[] 则可以看成:

矩阵

int[][] a[] 等同于 int[][][] a ,你可以叫为三维数组, 所以 int[][] a[][][] 也同于 int[][][][][] a,叫为五维数组。

其实从Java language specification中可以看出 int[][] 可以理解为 type,尽管定义中指出不推荐 mixed notation 方式来声明多维数组, 但不影响这种表达式合法。