大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 什么是值傳遞和引用傳遞?區別在哪兒

什么是值傳遞和引用傳遞?區別在哪兒

更新時間:2023-02-07 16:14:34 來源:動力節點 瀏覽2237次

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

下面是對兩種傳遞方式在內存上的分析:

一:值傳遞

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

代碼示例如下:

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

結果:20

為什么?看下面分析:

什么是值傳遞和引用傳遞

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

再通俗的講法就是:

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

再來解釋引用傳遞

二:引用傳遞

實參傳遞給形參的是參數對于 堆內存上的引用地址 實參和 形參在內存上指向 了同一塊區域 對形參的修改會影響實參

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;
    }
}

結果:1 100

為什么?

什么是值傳遞和引用傳遞

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

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

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

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

通俗點的講法就是:

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

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

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

當然不一樣,都做熟了;

什么意思呢?

雞就是數據

冰箱二層就是存儲數據的地址

把雞做熟了就是相當于把值改變了

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

以上就是動力節點小編介紹的"什么是值傳遞和引用傳遞?區別在哪兒",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日本欧美高清 | 亚洲高清一区二区三区久久 | 国产免费久久精品久久久 | 国产精品剧情原创麻豆国产 | 久久99精品久久久久久首页 | 国产色综合天天综合网 | 成人午夜啪啪免费网站 | 五月天婷婷免费观看视频在线 | 乡下女色又黄一级毛片 | 亚洲精品中文字幕乱码一区二区 | 日本免费一级视频 | 国产精品四虎在线观看免费 | 99r视频| 美女国产在线 | 成人永久免费视频网站在线观看 | 99精品久久99久久久久久 | 色视频网站在线观看 | 日本精品欧洲www | 天天做人人爱夜夜爽2020毛片 | 久久精品欧美日韩精品 | 国产一级片毛片 | 欧美一区二区日韩一区二区 | 私人免费影院入口 | 国产精品伦理一区二区三区 | 在线a亚洲视频播放在线观看 | 国内精品51视频在线观看 | 久夜tv| 一级毛片真人免费观看 | 一级骚片超级骚在线观看 | 欧美久久精品一级c片片 | 高清毛片免费看 | 中文字幕一区在线播放 | 国产高清不卡一区二区三区 | 国产亚洲欧美在在线人成 | 图片区亚洲| 国产日韩欧美中文字幕 | 精品国产人成在线 | 怡红院成人永久免费看 | 99爱国产| 久久伊人成人 | 国产成人乱码一区二区三区在线 |