代码示例:
//交换实参
class MyValue {
public int val;
}
public class Test {
public static void swap(MyValue val1,MyValue val2) {
int tmp = val1.val;
val1.val = val2.val;
val2.val = tmp;
}
public static void main(String[] args) {
MyValue myVal1 = new MyValue();
MyValue myVal2 = new MyValue();
myVal1.val = 10;
myVal2.val = 20;
System.out.println("交换前:"+myVal1.val+" "+myVal2.val);
swap(myVal1,myVal2);
System.out.println("交换后:"+myVal1.val+" "+myVal2.val);
}
}
代码讲解:
通过类和对象的引用,可以达到交换实参的目的。首先定义一个类MyValue,在类中有一个成员变量val,然后在main方法中创建类的实例化,这时引用指向对象,如图所示:
调用静态方法swap,传参myVlaue1和myValue2,实际上等于传入了两个数的地址,因为myVlaue1和myValue2分别指向了两个对象,并且存放的是堆空间上两个对象的地址。
在swap方法中创建两个myValue类型的形参变量val1和val2,分别指向myVla1和myVal2,也就是说他们同样存放的是两个数的地址,如图所示:
在swap函数中,会交换两个引用的指向,就达到了交换实参的目的。
输出结果:



