Java中方法參數的總結

方法參數

方法獲得的都是全部參數值的拷貝,方法不能修改傳遞給它的任何參數變量的內容。
參數共有兩種類型:java

  • 基本數據類型
  • 對象引用

除了基本數據類型的都是對象引用,包括數組等等。數組

很容易得知,一個方法不可能改變一個基本數據類型的參數,下面討論參數的對象的狀況。
下面這個方法能夠將一個僱員的薪金提升兩倍code

public static void tripleSalary(Employee x)
{
    x.raiseSalary(200);
}

當調用對象

harry = new Employee(...);
tripleSalary(harry);

時,執行過程以下:ip

  1. x被初始化爲harry值的拷貝,x是對象的引用。x和harry同時指向相同的對象。
  2. raiseSalary方法應用於這個對象引用。x和harry同時引用的那個Employee對象的薪金提升了200%。
  3. 方法結束以後,x再也不使用。harry繼續引用那個增加了薪金的對象

Java中都是值傳遞,而不是引用傳遞

下面這個方法用來交換兩個僱員對象(其實作不到):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只是「複製品」。
這個過程說明,對象引用也是按值傳遞的。數據類型

相關文章
相關標籤/搜索