java方法之間引數傳遞(java 程式設計語言對物件採用的是引用呼叫嗎)
阿新 • • 發佈:2018-11-29
java方法之間引數傳遞
- 基礎型別值傳遞
public static void tripleValue(double x){
x = 3*x;
}
double value = 10;
tripleValue(value);
System.out.println("value is:"+value); //value is:10
呼叫tripleValue時,x僅僅是value的一個拷貝。tripleVlue方法執行完成後變數x會被釋放。
- 關於引用(物件)的傳遞
java 程式設計語言對物件採用的是引用呼叫嗎?
實際上這種理解不對,給出以下舉例來反駁這種說法。
首先編寫一個交換兩個僱員物件的方法:
public static void swap(Employee x, Employee y){
Employee temp = x;
x = y;
y = temp;
}
//進行呼叫
Employee a = new Employee("a");
Employee a = new Employee("a");
swap(a,b);
最終,在方法結束時臨時變數x和y會被丟棄。原來的變數a和b仍然引用這個方法之前所引用的物件。
這個過程說明:java語言對物件次啊用的不是引用呼叫,實際上,物件引用是按值傳遞的(將這個引用本身(注意並非這個引用所指向的物件)拷貝了一份傳遞進去了)
以上內容為閱讀《java核心技術》