執(zhí)行exch之前內(nèi)存分布如第一章圖所示,這時(shí)候打印,結(jié)果應(yīng)該是存儲(chǔ)在0018和0019單元的1和2。 進(jìn)入exch方法之后內(nèi)存分布如第二張圖所示,執(zhí)行完畢exch方法之后內(nèi)存分布如第三張圖所示。這時(shí)候打印i和j當(dāng)然依舊是存儲(chǔ)在0018和0019單元的1和2。 在Java中的情形也是一樣的??梢詫魅雃xch方法的參數(shù)看成是變量i和j的地址,也就是這里的p1和p2是c++里*p1和*p2的簡寫。假如參數(shù)類型不是基本類型,而是引用類型,使用內(nèi)存分布分析方法也能夠得到正確結(jié)果(使用引用類型作為例子也許更加輕易理解)。在Java中需要注重的是String類,該類實(shí)例是不可變的,也就是每次對其做修改都會(huì)創(chuàng)建新的String對象,而舊的對象沒有改變。 public class Test{ public static void main(String[] agrs){ Test t = new Test(); int i = 1; int j = 2; System.out.PRintln(i); System.out.println(j); t.exch(i, j); System.out.println(i); System.out.println(j); }
public void exch(int p1, int p2){ int temp = 0; temp = p1; p1 = p2; p2 = temp; } } 結(jié)果為: 1 2 1 2