java裏方法的參數傳遞

 

  java語言總是使用傳值調用的.方法得到的只是所有參數值的一個拷貝.所以方法不能改變參數變量本身的內容. 下面看一段代碼:

  int i = 10;

  sword.change(i);

  不管change()方法是怎麼實現的,方法調用後,變量i的值依然是10.現在讓我們仔細研究一下這種情況.假設我們現在要用一個方法把變量x的值增加三倍.:

 

public void addValue(double x)

 

  然後我們調用此方法:

  double perent = 10;

  zhangsan.addValue(perent);

  但是,我們發現方法調用後,perent的值依然是10,並沒有達到翻一翻的目的.讓我們來看一下這段程序的執行過程:

  1、x被初始化爲perent值的一個拷貝

  2、x值*3,變爲30,但是perent的值依然是10.

  3、方法結束後,x

  下面用一個圖表來表示:

 

  java裏的方法參數共有2種:

  1、基本類型     2、對象引用

  前面已經看到,方法不能改變基本類型的參數,但,對於對象參數,情況則不同.

現在,我們實現一個方法,把員工的工資增加到3倍

public void tripleSalary(Employee x){
  x.raiseSalary(
200);   //將x的值提高200%
}

執行調用

harry = new Employee();

tripeSalary(harry);

具體執行過程如下圖:

可以看到,x是harry的值的一份拷貝,這樣x和harry都指向同一個對象,所以x調用raisesaraly(200)方法,x和harry都指向的那個對象的薪金就被提高了200%.方法結束後,x不再被使用,但是harry繼續指向薪金被增加3倍的那個對象.

由此可見,方法得到的是對象引用的一個拷貝,2者都指向同一個對象.

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