Java按值傳遞和按引用傳遞

如果傳遞參數是基本類型或其包裝類,則按值傳遞,改變參數的值,實際參數的值不變。

	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;
	}
}
如果兩數交換,則必須使用數組操作數組中的兩個值才能實現,交換兩個對象也必須存放到數組中進行交換。

發佈了30 篇原創文章 · 獲贊 5 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章