Java——值傳遞與引用傳遞

來源:互聯網
上載者:User

標籤:資料   test   oid   空間   方法調用   引用傳遞   new   ber   strong   

1.基本類型和參考型別在記憶體中的儲存

(1)基本類型的變數儲存原始值,即它代表的值就是數值本身;

    基本類型在聲明變數時就為它分配了空間;

    基本類型在參數傳遞過程中屬於值傳遞,也就是複製一份資料到參數中。

 

(2)參考型別的變數儲存引用值

   ("引用值"指向記憶體空間的地址,代表了某個對象的引用,而不是對象本身,對象本身存放在這個引用值所表示的地址的位置。)

    參考型別在參數傳遞過程中資料引用傳遞,也就是將記憶體位址傳過去。

 2.引用傳遞和值傳遞

(1)值傳遞:

方法調用時,實際參數把它的值傳遞給對應的形式參數,函數接收的是原始值的一個copy,此時記憶體中存在兩個相等的基本類型,即實際參數和形式參數,後面方法

中的操作都是對形參這個值的修改,不影響實際參數的值。

 

  (2)引用傳遞:

 

    也稱為傳地址。方法調用時,實際參數的引用(地址,而不是參數的值)被傳遞給方法中相對應的形式參數,函數接收的是原始值的記憶體位址;

 

    在方法執行中,形參和實參內容相同,指向同一塊記憶體位址,方法執行中對引用的操作將會影響到實際對象。

 

 1 public class Test { 2  public static void main(String[] args) { 3      Test t = new Test(); 4      int score = 59;//這裡傳遞的參數score就是按值傳遞 5            6      Numbertest nt = new Numbertest(); 7      nt.num = 59;//這裡傳遞的參數num就是引用傳遞 8       9      t.addNum(score);10      System.out.println("3:"+score);11      12      t.addNum(nt);13      System.out.println("4:"+nt.num);14      15          16  }17  18  public void addNum(int score) {19        score++;            //1:6020 //     score=score++;      //1:5921 //     score=score+1;22      System.out.println("1:"+score);23  }24  25  public void addNum(Numbertest nt) {26      nt.num++;27      System.out.println("2:"+nt.num);28  }29  30 }31 32 33 34 public class Numbertest {35     36     public int num;37 38 }

運行結果:
1:60
3:59
2:60
4:60

此代碼啟動並執行結果就是最好的一個例子;

在傳遞中也許還有更多的影響因素,隨著學習的深入就會發現。

 

Java——值傳遞與引用傳遞

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.