Java中的值傳遞和引用傳遞

當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

答:是值傳遞。Java 編程語(yǔ)言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是該對(duì)象的引用一個(gè)副本。指向同一個(gè)對(duì)象,對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用(不是引用的副本)是永遠(yuǎn)不會(huì)改變的。

_ Java參數(shù),不管是原始類型還是引用類型,傳遞的都是副本(有另外一種說(shuō)法是傳值,但是說(shuō)傳副本更好理解吧,傳值通常是相對(duì)傳址而言)。_

  • 如果參數(shù)類型是原始類型,那么傳過(guò)來(lái)的就是這個(gè)參數(shù)的一個(gè)副本,也就是這個(gè)原始參數(shù)的值,這個(gè)跟之前所談的傳值是一樣的。如果在函數(shù)中改變了副本的 值不會(huì)改變?cè)嫉闹?

  • 如果參數(shù)類型是引用類型,那么傳過(guò)來(lái)的就是這個(gè)引用參數(shù)的副本,這個(gè)副本存放的是參數(shù)的地址。如果在函數(shù)中沒有改變這個(gè)副本的地址,而是改變了地址中的值,那么在函數(shù)內(nèi)的改變會(huì)影響到傳入的參數(shù)。如果在函數(shù)中改變了副本的地址,如new一個(gè),那么副本就指向了一個(gè)新的地址,此時(shí)傳入的參數(shù)還是指向原來(lái)的地址,所以不會(huì)改變參數(shù)的值。

ps:“在Java里面參數(shù)傳遞都是按值傳遞”這句話的意思是:按值傳遞是傳遞的值的拷貝,按引用傳遞其實(shí)傳遞的是引用的地址值,所以統(tǒng)稱按值傳遞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言 學(xué)習(xí)過(guò)C語(yǔ)言的同學(xué)都很清楚在c中調(diào)用方法的參數(shù)有值傳遞和引用傳遞兩種方式。關(guān)于值傳遞和引用傳遞網(wǎng)上有許多的博...
    寧愿呢閱讀 1,474評(píng)論 0 4
  • 今天復(fù)習(xí)Java基礎(chǔ),發(fā)現(xiàn)有一個(gè)概念好像有點(diǎn)模糊了,就是值傳遞,Think in Java中說(shuō)Java只有值傳遞。...
    莫那一魯?shù)?/span>閱讀 682評(píng)論 0 4
  • 方法調(diào)用是編程語(yǔ)言中非常重要的一個(gè)特性,在方法調(diào)用時(shí),通常需要傳遞一些參數(shù)來(lái)完成特定功能。 我們首先觀察一個(gè)簡(jiǎn)單的...
    小人物灌籃閱讀 597評(píng)論 0 0
  • 和一個(gè)情緒不穩(wěn)定暴躁易怒的人生活在一起,壓力非常的大,小心翼翼生怕又說(shuō)哪句話會(huì)惹得他暴怒會(huì)讓整個(gè)氛圍變得...
    red_or_white閱讀 134評(píng)論 0 0
  • 穿衣似乎是一件非常簡(jiǎn)單的事情,然而穿搭產(chǎn)生的視覺效果卻存在巨大的差異。有的人,只在襯衫上搭配一條絲巾,就會(huì)成為焦...
    yoho小姐閱讀 717評(píng)論 0 2

友情鏈接更多精彩內(nèi)容