Java中值傳遞和引用傳遞的區(qū)別
在Java中參數(shù)的傳遞主要有兩種:值傳遞和參數(shù)傳遞;
下面是對兩種傳遞方式在內(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
為什么?看下面分析:

通俗的講法就是:形參只是實參創(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
為什么?

由于引用傳遞,傳遞的是地址,方法改變的都是同一個地址中的值,
原來a[0]指向0x13地址,值是1,
后來在a[0] 指向的也是0x13地址,將值變成了100
所以,再查詢a[0]的值的時候,值自然變成了100
通俗點的講法就是:
小明回到家,他妻子說:冰箱二層有一只雞,你去做了;
小明做好了,叫妻子過來吃飯。
這個時候,他妻子現(xiàn)在看見的雞和她買回來的一樣嗎?
當(dāng)然不一樣,都做熟了;
什么意思呢?
雞就是數(shù)據(jù)
冰箱二層就是存儲數(shù)據(jù)的地址
把雞做熟了就是相當(dāng)于把值改變了
地方還是那個地方,就是雞變了。
以上所述是小編給大家介紹的Java中值傳遞和引用傳遞的區(qū)別詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
解決Springboot項目報錯:java:錯誤:不支持發(fā)行版本?17
這篇文章主要給大家介紹了關(guān)于解決Springboot項目報錯:java:錯誤:不支持發(fā)行版本17的相關(guān)資料,這個錯誤意味著你的Spring Boot項目正在使用Java 17這個版本,但是你的項目中未配置正確的Java版本,需要的朋友可以參考下2023-08-08
Java實現(xiàn)的動態(tài)數(shù)字時鐘功能示例【顯示世界時間】
這篇文章主要介紹了Java實現(xiàn)的動態(tài)數(shù)字時鐘功能,結(jié)合實例形式分析了java顯示北京、紐約、倫敦等世界時間的相關(guān)日期時間運算操作技巧,需要的朋友可以參考下2019-03-03
SpringCloud maven-assembly-plugin 多級目錄打包的實現(xiàn)
本文主要介紹了SpringCloud maven-assembly-plugin 多級目錄打包的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Java List轉(zhuǎn)換成String數(shù)組幾種實現(xiàn)方式詳解
這篇文章主要介紹了Java List轉(zhuǎn)換成String數(shù)組幾種實現(xiàn)方式詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12
Java設(shè)計模式中的策略(Strategy)模式解讀
這篇文章主要介紹了Java設(shè)計模式中的策略(Strategy)模式解讀,對象的某個行為,在不同場景有不同實現(xiàn)方式,可以將這些行為的具體實現(xiàn)定義為一組策略,每個實現(xiàn)類實現(xiàn)一種策略,在不同場景使用不同的實現(xiàn),并且可以自由切換策略,需要的朋友可以參考下2023-10-10
Java開發(fā)Oracle數(shù)據(jù)庫連接JDBC Thin Driver 的三種方法
這篇文章主要介紹了Java開發(fā)Oracle數(shù)據(jù)庫連接JDBC Thin Driver 的三種方法,需要的朋友可以參考下2015-12-12

