
7-5 多维数组的原理
本章前面所介绍的数组是一维数组,如果有一个数组它的元素都是指向另一个数组,那么可以将这个数组称作二维数组。这个思想可以扩充为,如果有一个数组它的元素都是指向一个二维数组,那么可以将这个数组称作三维数组。
7-5-1 多维数组元素的声明
声明多维数组与声明一维数组思路相同,其实只是声明一维数组的扩充,下面是声明二维数组的语法。

例如,下面是声明x为整数的二维数组。

其实以上思路可以扩充到更高维的数组声明,例如,下面是声明y为整数的三维数组。

7-5-2 配置多维数组的空间
配置多维数组空间的思路与配置一维数组思路相同,下面是配置2行3列的二维数组方式。

上述两行也可以简化为下列表示法,直接声明与配置。

程序实例ch7_19.java:声明与配置二维数组。

执行结果

程序实例ch7_20.java:简化二维数组的声明与配置,这个程序基本上是将ch7_19.java的第3和4行简化为下列表示法。

执行结果
与ch7_19.java相同。
7-5-3 声明与设置二维数组元素的初值
7-2-5节是设置一维数组的初值,设置二维数组的初值其思路是类似的。
程序实例ch7_21.java:设置二维数组的初值,同时输出此二维数组的内容。

执行结果

上述二维数组经执行后内存图示如下。

程序实例ch7_22.java:在程序中设置二维数组的元素值,重新设计ch7_21.java。

执行结果
与ch7_21.java相同。
7-5-4 分层配置二维数组
先前的二维数组声明与配置是同时进行的,Java也允许以分层方式配置第二维的数组空间。
程序实例ch7_23.java:使用分层方式建立二维数组,重新设计ch7_20.java。

执行结果
与ch7_20.java相同。
上述程序在第3行先声明整数的二维数组x,同时为第一维度数组配置两个元素,这种声明方式相当于是告诉编译程序第一维度的元素,主要是存储未来要指向第二维度的内存地址,但是第二维度则尚未配置元素空间。程序第4、5行则是一个循环,这个循环主要是为第一维度的每个元素配置数组空间,也就是第二维的数组,此次是配置含三个元素的空间。
7-5-5 不同长度的二维数组
Java允许配置不同长度的二维数组,由于第二维的长度不同,所以一般无法使用循环方式设置第二维的长度。
程序实例ch7_24:建立第二维长度不同的数组,同时设置数组元素内容和输出结果。

执行结果

上述二维数组经执行后内存图示如下。
