值傳遞
package ch5;
/**
* Created by Jiqing on 2016/11/9.
*/
public class Transfer {
public static void swap(int a,int b) {
int tmp = a;
a = b;
b = tmp;
System.out.println("swap方法中,a的值是"+a+",b的值是"+b);
}
public static void main(String[] args) {
int a = 6;
int b = 9;
swap(a,b); // swap方法中,a的值是9,b的值是6
System.out.println("交換結束后,a的值是"+a+",b的值是"+b); // 交換結束后,a的值是6,b的值是9
// 傳參數相當於復制,swap中的a、b是復制品
}
}



參數傳遞相當於復制一個孫悟空,真身沒受影響。
真身就是實參,復制的孫悟空就是形式參數。
當系統開始執行方法時,系統為形式參數初始化,把實參變量的值賦給形參變量,方法里操作的只是形式參數而已。
實參本身沒有受到影響。
引用傳遞(對象引用,指向對象地址)
package ch5;
/**
* Created by Jiqing on 2016/11/9.
*/
public class DataWrap {
int a;
int b;
}
package ch5;
/**
* Created by Jiqing on 2016/11/9.
*/
public class ReferenceTransfer { // 引用傳遞
public static void swap(DataWrap dw) { // 復制一個dw的引用,指向對象
int tmp = dw.a;
dw.a = dw.b;
dw.b = tmp;
System.out.println("swap方法中,a的值是"+dw.a+",b的值是"+dw.b);
dw = null; // 把它殺掉
}
public static void main(String[] args) {
DataWrap dw = new DataWrap();
dw.a = 6;
dw.b = 9;
swap(dw);//swap方法中,a的值是9,b的值是6
System.out.println("交換結束后,a的值是"+dw.a+",b的值是"+dw.b);//swap方法中,a的值是9,b的值是6
}
}



