亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2019年03月22日 09:55:34   作者:小菜鳥(niǎo)大夢(mèng)想  
這篇文章主要介紹了Java中值傳遞和引用傳遞的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

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

一:值傳遞

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

代碼示例如下:

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

結(jié)果:20

為什么?看下面分析:

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

再通俗的講法就是:

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

再來(lái)解釋引用傳遞

二:引用傳遞

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

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

為什么?

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

原來(lái)a[0]指向0x13地址,值是1,

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

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

通俗點(diǎn)的講法就是:

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

小明做好了,叫妻子過(guò)來(lái)吃飯。

這個(gè)時(shí)候,他妻子現(xiàn)在看見(jiàn)的雞和她買回來(lái)的一樣嗎?

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

什么意思呢?

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

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

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

地方還是那個(gè)地方,就是雞變了。

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

相關(guān)文章

最新評(píng)論