方法獲得的都是全部參數值的拷貝,方法不能修改傳遞給它的任何參數變量的內容。
參數共有兩種類型:java
除了基本數據類型的都是對象引用,包括數組等等。數組
很容易得知,一個方法不可能改變一個基本數據類型的參數,下面討論參數的對象的狀況。
下面這個方法能夠將一個僱員的薪金提升兩倍code
public static void tripleSalary(Employee x) { x.raiseSalary(200); }
當調用對象
harry = new Employee(...); tripleSalary(harry);
時,執行過程以下:ip
下面這個方法用來交換兩個僱員對象(其實作不到):class
public static void swap(Employee x, Emploee y)//doesn't work { Employee temp = x; x = y; y = temp; }
若是Java對對象採用的是按引用(地址)調用那麼這個方法能夠實現兩個對象交換數據的效果。變量
Employee a = new Employee("Alice",...); Employee b = new Employee("Bob",...); swap(a,b);
可是執行完該方法後,a和b所引用的對象並無改變。x和y在方法執行過程當中所引用的對象改變了,可是a和b引用的對象並無改變,由於x和y只是「複製品」。
這個過程說明,對象引用也是按值傳遞的。數據類型