0x07-我在写 java swap 函数时理解了值传递与引用
description: 关于值传递与引用,我还是通过这个实践才真正理解
简介¶
在写算法的时候,书本里使用的 c 语言里的 swap 函数,头一热就在 java 里写了一个。
public void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
快速入门¶
这样写:
public static int swap(int itself, int dummy)
{
return itself;
}
public static void main(String[] args)
{
int a = 10;
int b = 20;
a = swap(b, b = a);
}
class MyInteger {
private int x; // single data member
public MyInteger(int xIn) { x = xIn; } // constructor
public int getValue() { return x; } // retrieve value
public void insertValue(int xIn) { x = xIn;} // insert
}
public class Swapping {
// swap: pass references to objects
static void swap(MyInteger rWrap, MyInteger sWrap) {
// interchange values inside objects
int t = rWrap.getValue();
rWrap.insertValue(sWrap.getValue());
sWrap.insertValue(t);
}
public static void main(String[] args) {
int a = 23, b = 47;
System.out.println("Before. a:" + a + ", b: " + b);
MyInteger aWrap = new MyInteger(a);
MyInteger bWrap = new MyInteger(b);
swap(aWrap, bWrap);
a = aWrap.getValue();
b = bWrap.getValue();
System.out.println("After. a:" + a + ", b: " + b);
}
}
附录¶
是不是三行代码的方式更简单~
最后更新: 2021-07-26
创建日期: 2021-03-04
创建日期: 2021-03-04