Java核心技术卷I基础知识3.10.7 不规则数组-阿里云开发者社区

开发者社区> 华章出版社> 正文

Java核心技术卷I基础知识3.10.7 不规则数组

简介:

3.10.7 不规则数组


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

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

 

图3-15 一个二维数组

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

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

 

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

 

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

 

接下来,分配这些行。

 

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

 

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

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

 

不同于

 

也不同于

 

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

 

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

 

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

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

 

 

 

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接