如果傳遞參數是基本類型或其包裝類,則按值傳遞,改變參數的值,實際參數的值不變。
public static void main(String[] args) {
Integer i = 1;
System.out.println(i); //1
changeI(i);
System.out.println(i); //1,i的值沒有改變
}
public static void changeI(Integer i){
i =2 ;
}
如果傳遞參數是類或數組,則按引用傳遞,改變對象的引用,實參的引用不會改變,但是如果改變的是對象或數組中的值,則實參對象或數組中的值也會跟着改變。
public class SwapTest {
/**
* @param args
*/
public static void main(String[] args) {
C c1 = new C();
c1.setId(1);
System.out.println(c1.id); //1
changeId(c1);
System.out.println(c1.id); //2,實參的id改變了
}
public static void changeId(C c1){
c1.id = 2;
}
}
class C{
Integer id;
public C(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
如果兩數交換,則必須使用數組操作數組中的兩個值才能實現,交換兩個對象也必須存放到數組中進行交換。