在定义类的成员方法时,其参数的数据类型可以是基本数据类型,也可以是数组、字符串和类对象等引用类型。在将数组作为形参时,形参的定义格式如下:
访问控制符 返回值 方法名(数据类型[] 数组名)
方法中数组形参的形式实际上是数组的声明格式,前面我们学习过数组初始化的一种形式就是用已初始化后的数组对一个新声明的数组进行初始化,数组做形参就是这种情况,因此,要求传递的实参,其数据类型应该与在方法中定义的形参的数据类型相同,同时,形参和实参会具有相同的物理存储地址,因此,形参和实参是同一个数组,当然,在成员方法中队形参数组中各个元素的任何修改,都会使传递给它的实参数组的各个元素值发生变化,这种参数的传递方式被称为“双向地址传递”。
一般来说,如果成员方法的形参数据类型为基本数据类型,这时候参数传递方式是“单向值传递”,若果成员方法的形参数据类型为引用数据类型(数组,字符串、类对象等),则参数传递方式是“双向地址传递”。
采用数组名作形参的方式修改[例5-3]。
[例5-4]
class Change{
public void swap(int arr[]){
System.out.println("交换前形参:\n arr[0]="+arr[0]+" arr[1]="+arr[1]);
int temp;
temp=arr[0];
arr[0]=arr[1];
arr[1]=temp;
System.out.println("交换后形参:\n arr[0]="+arr[0]+" arr[1]="+arr[1]);
}
}
public class Test5_4 {
public static void main(String[] args) {
int[] arr={5,8};
Change c = new Change();
System.out.println("交换前实参:\n arr[0]="+arr[0]+" arr[1]="+arr[1]);
c.swap(arr);
System.out.println("交换后实参:\n arr[0]="+arr[0]+" arr[1]="+arr[1]);
}
}
运行结果为:
交换前实参:
arr[0]=5 arr[1]=8
交换前形参:
arr[0]=5 arr[1]=8
交换后形参:
arr[0]=8 arr[1]=5
交换后实参:
arr[0]=8 arr[1]=5
从运行结果可以看出,对形参数组arr两个元素arr[0]和arr[1]的修改影响到了实参数组arr的两个元素arr[0]和arr[1]。这里需要注意的是,形参和实参的名字都是arr,需要区分哪个是形参,哪个是实参。
向方法传递数组元素值的“单向值传递方式”和普通变量效果是一样的,因此,这种情况完全可以用普通变量来代替。在实际应用中,我们更多的是使用向方法传递数组名的“双向地址传递”方式。
5.1.6 数组元素间的比较
了解了数组元素的访问后,我们可以利用数组元素的遍历实现很多功能。
1.数组最大值、最小值和平均值
利用for循环遍历 数组的所有元素可以非常方便的求出数组的最大值、最小值和平均值。
[例5-5]]求出一个数组的最大值、最小值、平均值
import java.util.Scanner;
class Array {
//计算数组元素最大值
public int getMax(int[] a){
int max=a[0];