91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中值傳遞和引用傳遞的區別

發布時間:2020-10-03 06:04:24 來源:腳本之家 閱讀:167 作者:小菜鳥大夢想 欄目:編程語言

在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

為什么?看下面分析:

Java中值傳遞和引用傳遞的區別

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

再通俗的講法就是:

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

再來解釋引用傳遞

二:引用傳遞

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

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

為什么?

Java中值傳遞和引用傳遞的區別

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

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

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

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

通俗點的講法就是:

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

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

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

當然不一樣,都做熟了;

什么意思呢?

雞就是數據

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

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

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

以上所述是小編給大家介紹的Java中值傳遞和引用傳遞的區別詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济源市| 富宁县| 武安市| 锡林浩特市| 忻城县| 沂南县| 新丰县| 南昌市| 青川县| 鹤峰县| 黄冈市| 龙江县| 满城县| 桃园市| 囊谦县| 建瓯市| 民丰县| 平阴县| 鄯善县| 克山县| 衡东县| 米林县| 嘉定区| 北海市| 华池县| 大厂| 平定县| 明光市| 西华县| 外汇| 贵南县| 九龙坡区| 当雄县| 灵宝市| 北安市| 福建省| 五原县| 积石山| 格尔木市| 巴楚县| 横峰县|