Java核心技术卷I基础知识(原书第9版)
上QQ阅读APP看书,第一时间看更新

3.10.7 不规则数组

到目前为止,读者所看到的数组与其他程序设计语言中提供的数组没有多大区别。但实际存在着一些细微的差异,而这正是Java的优势所在:Java实际上没有多维数组,只有一维数组。多维数组被解释为“数组的数组。”

例如,在前面的示例中,balances数组实际上是一个包含10个元素的数组,而每个元素又是一个由6个浮点数组成的数组(请参看图3-15)。

表达式balances[i]引用第i个子数组,也就是二维表的第i行。它本身也是一个数组,balances[i][j]引用这个数组的第j项。

由于可以单独地存取数组的某一行,所以可以让两行交换。

还可以方便地构造一个“不规则”数组,即数组的每一行有不同的长度。下面是一个典型的示例。在这个示例中,创建一个数组,第i行第j列将存放“从i个数值中抽取j个数值”产生的结果。

图3-15 一个二维数组

由于j不可能大于i,所以矩阵是三角形的。第i行有i+1个元素(允许抽取0个元素,也是一种选择)。要想创建一个不规则的数组,首先需要分配一个具有所含行数的数组。

接下来,分配这些行。

在分配了数组之后,假定没有超出边界,就可以采用通常的方式访问其中的元素了。

程序清单3-9给出了完整的程序。

C++注释:在C++中,Java的声明

不同于

也不同于

而是分配了一个包含10个指针的数组:

然后,指针数组的每一个元素被填充了一个包含6个数字的数组:

庆幸的是,当创建new double[10][6]时,这个循环将自动地执行。当需要不规则的数组时,只能单独地创建行数组。

程序清单3-9 LotteryArray/LotteryArray.java

现在,已经看到了Java语言的基本程序结构,下一章节将介绍Java中的面向对象的程序设计。