Java从入门到项目实战(全程视频版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

6.5 数组与方法

img

在数组进行引用传递的处理中,最为常见的形式就是基于方法进行引用数据的处理或返回,下面将通过几个案例对此类操作进行说明。

范例:使用方法接收数组引用

img

本程序利用数组静态初始化定义数组,随后将其引用地址传递给了printArray()方法中的temp变量,在此方法中实现了内容的输出,本程序的内存流程如图6-6所示。

img

图6-6 数组引用传递

在程序中方法可以接收一个数组的引用,那么方法也可以返回一个数组的引用,此时只需在方法的返回值类型上将其定义为对应的数组类型即可。

范例:方法返回数组

img

本程序定义的initArray()方法的主要功能就是返回一个数组的引用,由于initArray()方法的返回值类型为“int []”,所以必须使用同类型的数组接收,即“int data[]=initArray();”,本程序的内存分析流程如图6-7所示。

上面的程序演示了关于用方法接收与返回数组的处理情况,下面再通过一个具体的案例演示通过方法修改数组内容的处理。

img

图6-7 数组引用传递

范例:通过方法修改数组内容

img
img

本程序changeArray()方法的主要功能是修改接收到的数组内容,由于发生的是引用关系,所以修改后的结果将直接影响到原始内容,本程序的内存分析流程如图6-8所示。

img

图6-8 通过方法修改数组内容

通过以上分析,可以清楚了解数组与方法之间的引用传递问题。但是现在所有的程序代码都是在主类中编写的,并没有使用到过多的面向对象设计思想,下面将结合面向对象的设计思想实现一个数组的操作案例,本操作案例要求如下:随意定义一个int数组,要求可以计算出这个数组元素的总和、最大值、最小值、平均值。

范例:结合面向对象设计实现数组内容统计

img
img

本程序为了实现案例的要求,采用面向对象的形式定义了一个专门的数组操作类,并且在此类的构造方法中实现了数组内容的相关统计操作与结果保存,这样在主类调用时就不再牵扯到具体的程序逻辑,只需根据要求传入数据获取相应的结果即可。

提示:关于合理的程序结构设计。

在现实的项目开发中,主类通常是作为客户端调用形式出现,执行的代码应该越简单越好。以本程序为例,客户端只是传入了数据并获取了结果,而对于这个结果是如何得来的,实际上客户端并不关心。