当为多维数组分配内存时,只需要为第一维分配内存,而其余的可以单独分配。例如,下面的代码就在声明table数组时为他的第一维分配了内存,而他的第二维是手动分配内存。
int table[][] = new int[3][]; table[0] = new int[4]; table[1] = new int[3]; table[2] = new int[2];
尽管在这种情况下单独分配第二维数组的内存没有什么优势可言,但是在其他情况下却可能有优势。例如,当手动给数组的各维分配内存时,不必为每一个索引分配同等数量的元素。因为多维数组是作为数组的数组来实现的,所以每个数组的长度是由你来控制的。
在大多数的应用程序中并不推荐使用不规则的多维数组,因为当人们遇到多维数组时,其运行方式与人们所期望的往往相反。然而,在某些情况下使用不规则数组效率却非常高。例如,如果需要一个非常大的二维数组,但是只有个别位置上才存储数据(即,不是使用所有元素),这时不规则数组可能是完美的解决方法。
1.三维或更多维的数组
Java支持二维以上的数组,下面是声明多维数组的基本形式:
type name[][]...[] = new type[size1][size2]...[sizeN]
例如,下面的声明就创建了一个4x10x3的三维数组:
int multidim[][][] = new int[4][10][3];
2.初始化多维数组
通过将每一维的初始值包含咋花括号中,可以完成多维数组的初始化:
type-specifier array_name[][] = { {val,val,val,...val}, {val,val,val,...val}, {val,val,val,...val}, ... {val,val,val,...val} }
val表示初始化值,每个内部块指派了一行.在每一行中,第一个值存储在子数组的第一个位置,第二个值则位于第二个位置,以此类推.注意,初始化之间要用逗号分隔,而右花括号后面要有分号.