public class Test
{
public static void main(String[] args)
{
int[] a = {1,2};
swap(a[0],a[1]);
System.out.println(a[0] + " " + a[1]);
}
public static void swap(int n1, int n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
}
void swap(int n1 ,int n2)函数中形参n1,n2其实是主函数中数组 元素a[0] a[1]的的备份,
你交换的是n1,n2内存里面的值,并没有动a[0],a[1]的修改内存,所自然就没有交换了的。
将函数改为这样
void swap(int [ ] arr)
{
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
}
在主函数中将数组的引用a传递给arr,那么arr也可以引用主函数中数组的内存,
那么在swap中的arr[0]和主函数 的a[0]其实是同一个存储单元
arr[1]和主函数中的a[1]是同一个存储单元,那么就可以就可以在调用函数中实现主函数中的数组的值交换了。
|