參數傳遞:值傳遞:Core Java

Java方法調用時的參數傳遞都是值傳遞

基本類型的參數值傳遞

void methodA(){
	int a=5;
	methodB(i);
}

void methodB(int i ){  //創建一個棧幀,創建一個本地變量i,並在棧幀中開闢4個字節空間,將傳遞來的數值5存儲到這個空間中。
	i=i+3;
}

在上例中,A調用B方法後,將int型變量a的值,傳遞給方法B的參數i,無論變量i怎麼變,都只是變量i自己的事兒,跟變量a無關了,變量a的值永遠是5。

引用類型變量的參數值傳遞

class Person{
	String name;
	void setName(String name){
		this.name = name;
	}
}
class Test{
	void methodA(){
		Person p = new Person(); // 變量p中存儲的是new Person()創建出的對象的存儲地址,即引用,佔4個字節
		methodB(p);
		
	}
	void methodB(Person person ){  // 創建了一個棧幀,並創建一個變量person,爲其開闢4個字節的存儲空間,將變量p的值,即對象的存儲地址存放到這個變量person的空間中去。
		person.setName("jack");
	}
}

上例中,A調用B時,將變量p的值即對象的存儲地址傳遞給了B方法中的變量person,無論方法B中person變量的值怎麼變,A中變量p的值永遠都不會變,永遠存儲的是 new Person()創建出來的對象的存儲地址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章