1.错误事例:
public class Test {
public static void swap(int x, int y){
int tmp = x;
x = y;
y = tmp;
}
public static void main1(String[] args) {
int a = 10;
int b = 20;
System.out.println("交换前:" + a + " " +b);
swap(a,b);
System.out.println("交换后:" + a + " " +b);
}
}
输出结果:
交换前:10 20
交换后:10 20
未达到交换实参的原因是:该方法只是交换了形参x,y的值,而为交换实参。同时形参值的变化并不影响实参值的变化。
2.解决思路:
- 主要思路是把值封装在对象身上
- 创建一个类,这里取名为MyValue,同时定义一个成员变量为val。
- 实例化对象并赋值
- 创建一个swap方法来交换val值
下面有图例来帮助理解如何交换val值
3.代码实例:
class MyValue{
public int val;
}
public class Test {
public static void swap2(MyValue myV1,
MyValue myV2){
int tmp = myV1.val;
myV1.val = myV2.val;
myV2.val = tmp;
}
public static void main(String[] args) {
MyValue myValue1 = new MyValue();
MyValue myValue2 = new MyValue();
myValue1.val = 10;
myValue2.val = 20;
System.out.println("交换前:" + myValue1.val + " " +myValue2.val);
swap2(myValue1, myValue2);
System.out.println("交换后:" + myValue1.val+ " " +myValue2.val);
}
}
输出结果:
交换前:10 20
交换后:20 10