一、向方法传递数组参数:
传递基本数据类型值与传递数组引用变量给方法存在不同
第一个方法swap不能讲两个整型参数对换
第二个方法swapArray成功的对换了数组a中的两个元素
public class TestPassArray{
public static void main(String[] args){
int [] a ={1,2};
System.out.println("调用swap前");
System.out.println("数组a={"+a[0]+","+a[1]+"}");
swap(a[0],a[1]);
System.out.println("调用swap后");
System.out.println("数组a={"+a[0]+","+a[1]+"}");
System.out.println("调用swapArray前");
System.out.println("数组a={"+a[0]+","+a[1]+"}");
swapArray(a);//调用时即把a[]传递给了array[]
System.out.println("调用swapArray后");
System.out.println("数组a={"+a[0]+","+a[1]+"}");
}
public static void swap(int n1,int n2){
int temp = n1;
n1=n2;
n2=temp;
}
public static void swapArray(int[] array){
int temp = array[0];
array[0]=array[1];
array[1]=temp;
}
}
运行结果:
调用swap前
数组a={1,2}
调用swap后
数组a={1,2}
调用swapArray前
数组a={1,2}
调用swapArray后
数组a={2,1}
结论:
swap方法中的参数为基本数据类型,调用swap(a[0],a[1])时,只是将a[0],a[1]的值分别传给了n1,n2。而n1,n2独立存储在另一个不同于a[0],a[1]的内存位置。因此不导致数组a的元素对换。
swapArray方法的参数是一个数组,方法外的数组a和方法内的数组array都指向同一内存位置中的同一数组。因此不论在此方法内操作array还是在方法外操作数组a,实质上都在对同一个数组进行操作。
二、从方法中返回数组:
方法可以返回一个数组
以下代码返回一个与输入数组顺序相反的数组
public class TestReturnArray{
public static void main(String[] args){
int[] list1 = {1,2,3,4,5,6};
int[] list2=reverse(list1);//从reverse方法获取返回值 并赋值给list2
System.out.println("初始化的数组:");
for(int i=0;i<list1.length;i++){
System.out.print(list1[i]);
}
System.out.print("\n");
System.out.println("改变后的数组:");
for(int i=0;i<list1.length;i++){
System.out.print(list2[i]);
}
}
public static int[] reverse(int[] list){
int[] result = new int [list.length];
for(int i=0,j=result.length-1; i < list.length; i++, j--){
result[j]=list[i];
}
return result;//返回一个数组
}
}
运行结果:
初始化的数组:
123456
改变后的数组:
654321