![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=1739252700-VxRNBYaRlaJu3YM9om7gWuNJAjHzhAP3-0-64f675e7e53c01be8d259d205ee2a291)
例如,下面是声明x为整数的二维数组。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P111_758978.jpg?sign=1739252700-dpb1smp9L5OIu6vsXwWiivHI4QXgXB6y-0-495dcbf64398d61c84642158449caa75)
其实以上思路可以扩充到更高维的数组声明,例如,下面是声明y为整数的三维数组。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P111_758980.jpg?sign=1739252700-LrSB8ZRL6rmTearJ6QmZUdMD18q2S0wh-0-5028eb4c213acd2bcd63e1de9bfe7330)
7-5-2 配置多维数组的空间
配置多维数组空间的思路与配置一维数组思路相同,下面是配置2行3列的二维数组方式。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758994.jpg?sign=1739252700-iV7CYEY1TnuOGqx0r6KyJ4QyGfsJ1NIq-0-4710864ebbc69821da7fb78f24d9a249)
上述两行也可以简化为下列表示法,直接声明与配置。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758993.jpg?sign=1739252700-tIrRE81pWqWIAok2ZeTnBkZL2nbhlmlE-0-fe5961037dd2be9e6c32bcb9e0b9dca0)
程序实例ch7_19.java:声明与配置二维数组。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758995.jpg?sign=1739252700-Wygmv7QIRS5NugCqGYlSPQMcGh32ief6-0-400953534db6b59b10f72cb2f81371eb)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_763318.jpg?sign=1739252700-HckK2EUNoWpCuUFGG06id1rwXgkxnyWp-0-a304ea76e034984b6dcd203201b6209a)
程序实例ch7_20.java:简化二维数组的声明与配置,这个程序基本上是将ch7_19.java的第3和4行简化为下列表示法。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758998.jpg?sign=1739252700-B7RspLJUn4eZi4mwv6So3VVVgLH5fmJP-0-06a8076720f4ff21e88cb2562a7ac492)
执行结果
与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=1739252700-UUGeJBVwpnfynBCUp4tpItYRad27H68l-0-558f03c50cf7ff80ceef20e039376c71)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P112_758997.jpg?sign=1739252700-OgywtAKmwxPDu1hgL7zjFDksTSXqemJF-0-fa3602155beea9faa6274af3fc1e58e4)
上述二维数组经执行后内存图示如下。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P113_556956.jpg?sign=1739252700-m2i37iYIzOzh4LFgL9FCefCHz4awGzOT-0-1ea42b48e70af5d56f5e15c426e47cfa)
程序实例ch7_22.java:在程序中设置二维数组的元素值,重新设计ch7_21.java。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P113_556959.jpg?sign=1739252700-QokwjaKzAr7XqAGE7UFVLJiX9eORiWNh-0-862d66185ca94bcd03e62dd2c063ab8b)
执行结果
与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=1739252700-CT9B6OD2MTWUJGoVBe54vwm9RSLz4TdK-0-6f3a0b6b9fc9bb197230b9eebfbc2f48)
执行结果
与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=1739252700-bOWQqf1tH6vRRAPjjcZXr8WVnj5Yitd4-0-cb4d37a7f539cb0b935b5390c3b7dc0e)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P114_557392.jpg?sign=1739252700-tO9HrIiNlZUBRsObCd9Iyceniz6ocKTO-0-05f73264bd8993daab21cc6554d28ce2)
上述二维数组经执行后内存图示如下。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P114_557395.jpg?sign=1739252700-Yjmvw13PplSJFFibRmO64aPGZA98RGjh-0-131a23001af11c73babfcdba6cd585d3)