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

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

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

    在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

    通俗點的講法就是:

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

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

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

    當然不一樣,都做熟了;

    什么意思呢?

    雞就是數據

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

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

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

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

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

    免費課程推薦 >>
    技術文檔推薦 >>
    返回頂部
    疯狂婬荡乱婬A片中文,特级西西人体444WWw高清大胆,国产性XXXX18免费观看视频,中文字幕乱伦,free性满足HD国产精品,牛人女厕偷拍1区2区