![Java王者归来:从入门迈向高手](https://wfqqreader-1252317822.image.myqcloud.com/cover/394/27563394/b_27563394.jpg)
7-5 多维数组的原理
本章前面所介绍的数组是一维数组,如果有一个数组它的元素都是指向另一个数组,那么可以将这个数组称作二维数组。这个思想可以扩充为,如果有一个数组它的元素都是指向一个二维数组,那么可以将这个数组称作三维数组。
7-5-1 多维数组元素的声明
声明多维数组与声明一维数组思路相同,其实只是声明一维数组的扩充,下面是声明二维数组的语法。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P111_758982.jpg?sign=1739531729-UQHrORElNWW20qLqsBfl2DureUQ7U7Dw-0-61145ebf08e65588861827b516991ff4)
例如,下面是声明x为整数的二维数组。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P111_758978.jpg?sign=1739531729-4EWH72zwRW1aNevzbniyrQZP5gGOCl6p-0-81d14cefee35de1c6d5b569c90958714)
其实以上思路可以扩充到更高维的数组声明,例如,下面是声明y为整数的三维数组。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P111_758980.jpg?sign=1739531729-dgDF03MJPn3Ro2AVluT5SXNFAqBQB78W-0-9a872122e453cc4290b1d1f4152472d2)
7-5-2 配置多维数组的空间
配置多维数组空间的思路与配置一维数组思路相同,下面是配置2行3列的二维数组方式。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758994.jpg?sign=1739531729-uare6QhHd8NSQszShoL5VkALEqaM1ltr-0-c2ea94466748d1b2ad93beeb0f9ff1b0)
上述两行也可以简化为下列表示法,直接声明与配置。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758993.jpg?sign=1739531729-lwx94FQ9VlB0AKY670coXNPtdMSN9N3Z-0-f6e13f7a31896b8730f95f22e9e0d8fa)
程序实例ch7_19.java:声明与配置二维数组。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758995.jpg?sign=1739531729-3nfjBV4zZmRHdzk7ntwDUGchF6Hp4Y8E-0-37f41df15fde5d4b2db18e675eb6d15c)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_763318.jpg?sign=1739531729-aNfvTuGXRUHxAnH18jEG9qCDC4Iqi9Bq-0-31bb073c29543491c4980de685e22736)
程序实例ch7_20.java:简化二维数组的声明与配置,这个程序基本上是将ch7_19.java的第3和4行简化为下列表示法。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758998.jpg?sign=1739531729-eWA1H6wdpb2mZ0BIPqZgt8X4lNb7j8lj-0-7ab369d6021e94507ec599c78857846b)
执行结果
与ch7_19.java相同。
7-5-3 声明与设置二维数组元素的初值
7-2-5节是设置一维数组的初值,设置二维数组的初值其思路是类似的。
程序实例ch7_21.java:设置二维数组的初值,同时输出此二维数组的内容。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758996.jpg?sign=1739531729-gpnl57A2v4NcEsHqIDiUab2l0QpQdARn-0-4c3ad1403611aa525058ab19b2a37800)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758997.jpg?sign=1739531729-HDM4Dv067t3QEnJXGu4m3Oj86jdOojLe-0-fbdc7d622edd992e13f993740448a193)
上述二维数组经执行后内存图示如下。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P113_556956.jpg?sign=1739531729-XKxIVE3dYzuG00HC6aErVWjVl6Rtl84t-0-10229c66fc9952475f0e4290c94a91f4)
程序实例ch7_22.java:在程序中设置二维数组的元素值,重新设计ch7_21.java。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P113_556959.jpg?sign=1739531729-KnG9U47QMVMkpXkiBO5uN5wu92UOQBE7-0-cfa2517ba34b8b93e5794f38ee90c7f3)
执行结果
与ch7_21.java相同。
7-5-4 分层配置二维数组
先前的二维数组声明与配置是同时进行的,Java也允许以分层方式配置第二维的数组空间。
程序实例ch7_23.java:使用分层方式建立二维数组,重新设计ch7_20.java。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P113_556969.jpg?sign=1739531729-G1RFRGxzSGFiRSELfU8BiIbzMOQ46PU6-0-1be073163919b22a196df306cde8f710)
执行结果
与ch7_20.java相同。
上述程序在第3行先声明整数的二维数组x,同时为第一维度数组配置两个元素,这种声明方式相当于是告诉编译程序第一维度的元素,主要是存储未来要指向第二维度的内存地址,但是第二维度则尚未配置元素空间。程序第4、5行则是一个循环,这个循环主要是为第一维度的每个元素配置数组空间,也就是第二维的数组,此次是配置含三个元素的空间。
7-5-5 不同长度的二维数组
Java允许配置不同长度的二维数组,由于第二维的长度不同,所以一般无法使用循环方式设置第二维的长度。
程序实例ch7_24:建立第二维长度不同的数组,同时设置数组元素内容和输出结果。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P114_557386.jpg?sign=1739531729-tPROxY85Gg1AORRVoYVgP1kUpJij7MrQ-0-0b4450389fd745fb9ec1e43e6ffd7ea6)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P114_557392.jpg?sign=1739531729-puAT5JUAEolSBu0MxFpaiC36MtIHCOLj-0-8a6e06a7903aeeb21d818c1adb5045b9)
上述二维数组经执行后内存图示如下。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P114_557395.jpg?sign=1739531729-y9bwIWMycvPlsRaELOs2IXxqUJ1RJt6q-0-3f5836ff11bb2f8f19c6b8bbbbe9770e)