淺析java中的值傳遞與引用傳遞

來源:互聯網
上載者:User

標籤:

public class Test {    public static void main(String[] args) {        String s = new String("aaa");        change(s);        System.out.println(s);                StringBuilder sb = new StringBuilder("111");        change(sb);        System.out.println(sb);    }    static void change(String s){        s = new String("bbb");    }    static void change(StringBuilder sb){        sb.append("333");    }}

列印結果:

aaa
111333

=========================================================================================

如上代碼所示,

String s  = new String("aaa");其實就是String s = "aaa";只不過java後台會自動幫我們封裝;

而這裡的change(s),此時就是值傳遞,值傳遞其實是傳遞的資料的拷貝(副本)並不會影響原來的值,在java中8個基礎資料型別 (Elementary Data Type)和String類型傳遞均為值傳遞。

==========================================================================================

下面談談引用傳遞

如上代碼所示,

StringBuilder sb = new StringBuilder("111"); sb 指向 new StringBuilder("111")

change(sb)的時候是把sb的引用傳遞過去,所以當sb修改值的時候,原來的sb也跟著修改,因為他們指向的是同一塊記憶體。

在java中,對象之間的傳遞大都是引用傳遞

===================================================================================

 

以上就是本人對java中的值傳遞和引用傳遞的粗略見解,歡迎各位大神指導批評。

淺析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.