Java中值傳遞和引用傳遞的區(qū)別

在Java中參數(shù)的傳遞主要有兩種:值傳遞和參數(shù)傳遞;

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站設(shè)計,高端網(wǎng)頁制作,對成都木托盤等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)營銷推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

下面是對兩種傳遞方式在內(nèi)存上的分析:

一:值傳遞

解釋:實參傳遞給形參的是值  形參和實參在內(nèi)存上是兩個獨立的變量 對形參做任何修改不會影響實參

代碼示例如下:

package arrayDemo;
public class Demo1 {
    public static void main(String[] args) {
        int b =20;
        change(b);// 實參 實際上的參數(shù)
        System.out.println(b);
    }
    public static void change(int a){//形參 形式上的參數(shù)
        a=100;
    }
}

結(jié)果:20

為什么?看下面分析:

Java中值傳遞和引用傳遞的區(qū)別

通俗的講法就是:形參只是實參創(chuàng)建的一個副本,副本改變了,原本當(dāng)然不可能跟著改變;

再通俗的講法就是:

小明去餐廳吃飯,看見別人點的紅燒肉挺好吃,九把服務(wù)員叫過來,說我要一份紅燒肉,服務(wù)員從后廚拿來一份紅燒肉,小明吃完了,但是他吃的紅燒肉跟旁邊那個人吃的是一份嗎?當(dāng)然不是。

再來解釋引用傳遞

二:引用傳遞

實參傳遞給形參的是參數(shù)對于 堆內(nèi)存上的引用地址 實參和 形參在內(nèi)存上指向 了同一塊區(qū)域  對形參的修改會影響實參

package arrayDemo;
public class Demo1 {
    public static void main(String[] args) {
        int [] a={1,2,3};
        System.out.println(a[0]);
        change(a);
        System.out.println(a[0]);
    }
    public static void change(int[] a ){
        a[0]=100;
    }
}

結(jié)果:1        100

為什么?

Java中值傳遞和引用傳遞的區(qū)別

由于引用傳遞,傳遞的是地址,方法改變的都是同一個地址中的值,

原來a[0]指向0x13地址,值是1,

后來在a[0] 指向的也是0x13地址,將值變成了100

所以,再查詢a[0]的值的時候,值自然變成了100

通俗點的講法就是:

小明回到家,他妻子說:冰箱二層有一只雞,你去做了;

小明做好了,叫妻子過來吃飯。

這個時候,他妻子現(xiàn)在看見的雞和她買回來的一樣嗎?

當(dāng)然不一樣,都做熟了;

什么意思呢?

雞就是數(shù)據(jù)

冰箱二層就是存儲數(shù)據(jù)的地址

把雞做熟了就是相當(dāng)于把值改變了

地方還是那個地方,就是雞變了。

以上所述是小編給大家介紹的Java中值傳遞和引用傳遞的區(qū)別詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!

分享標(biāo)題:Java中值傳遞和引用傳遞的區(qū)別
URL分享:http://bm7419.com/article16/gejgdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站改版、企業(yè)建站面包屑導(dǎo)航、定制網(wǎng)站、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化