一维数组使用数组名称与一个索引值来指定存取数组元素,您也可以声明二维数组,二维数组使用数组名称与两个索引值来指定存取数组元素,其声明方式与一维
数组类似: int[][] arr =
{{1, 2, 3},
{4, 5, 6}}; 从上面这个程序片段来看,就可以清楚的看出二维数组的索引方式,您声明了2列(Row)3行(Column)的数组,您可以使用{ }与适当的断行协助您指定数组初值,下面这个程序简单的示范二维数组的存取:
public class TwoDimArray { 执行结果:
在使用二维数组对象时,注意length所代表的长度,数组名称直接加上length,所指的是有几列(Row),而使用索引加上length,指的是该列所拥有的元素,也就是行(Column)数目,要了解为何是这样,必须从对象配置的角度来说明。 以对象的方式来配置一个二维数组对象,您使用以下的语法: int[][] arr = new int[2][3];
上面这个程序片段中,您配置了2列3行的二维数组对象,由于数据类型是int,所以数组元素的默认元素为0,事实上这样的语法是Java为了程序设计人员使用上的方便所设计的,来细究配置的细节。 在上面的程序片段中,其实arr[0]、arr[1]是两个一维数组对象,其长度为3,而arr的类型为int[][],内容值为arr[0]与arr[1],其关系如下: 从上图中您可以看到,arr名称指向int[][]类型的对象,而arr[0]与arr[1]再分别指向一个一维数组对象,所以这也就是为何上面的程序中,使 用的length所表示的长度意义,您也可以知道,在Java中,一个二维数组的配置,各个元素的内存位置并不是连续的。 同样的道理,您也可以声明三维以上的数组,如果要声明同时初始元素值,可以使用以下的语法: int[][][] arr = {
{{1, 2, 3}, {4, 5, 6}}, {{7, 8, 9}, {10, 11, 12}} }; 上面这个程序片段所声明的三维数组是2x2x3,您将之想为两面2x3二维数组交叠在一起就是了,每一面的元素如下: 第一面 1 2 3 4 5 6 第二面 7 8 9 10 11 12 您也可以藉由立方体的(x, y, z)关系来标示三个索引值的关系,也就是列、行与高。 如果要动态声明三维数组,就使用以下的语法: int[][][] arr = new int[2][2][3];
多维以上的数组在Java中也是可行的,但并不建议使用,使用多维数组会让元素索引的指定更加困难,此时适当的将数据加以分割,或是使用其它的数据结构来解决,会比直接声明多维数组来得实在。 由以上的说明,接下来讨论一个进阶议题:不规则数组。数组的维度不一定要是四四方方的,您也可以制作一个二维数组,而每个维度的长度并不相同,例如:
public class TwoDimArray { 执行结果:
这个例子只是上面的说明之观念延伸,在这个例子中,数组第一列的长度是3,而第二列的长度是5。 |