1. 程式人生 > >java方法之間引數傳遞(java 程式設計語言對物件採用的是引用呼叫嗎)

java方法之間引數傳遞(java 程式設計語言對物件採用的是引用呼叫嗎)

java方法之間引數傳遞
  1. 基礎型別值傳遞
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會被釋放。

  1. 關於引用(物件)的傳遞
    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核心技術》