當前位置:
首頁 > 最新 > 從零學java筆錄-第36篇 java中值傳遞址值傳遞 圖解

從零學java筆錄-第36篇 java中值傳遞址值傳遞 圖解

前言:

本文是java基礎語法最後一篇。從下節課開始,我們將進入-【從零學Java】的第二階段-->面向對象

本節內容:

1:java中的值傳遞及圖解

2:地址值傳遞及圖解

3:第一階段(基礎語法)總結和第二階段預告

本文出處:《凱哥陪你學系列之java基礎篇.Java基本語法篇》中第36篇基礎語法完結篇- java中值傳遞和地址值傳遞And圖解

聲明:本文系凱哥原創。轉載請註明出處。謝謝!網易媒體

一:java中的值傳遞

如下圖:

問題:

、、中分別輸出的是什麼?

我們嘗試著看代碼來進行分析:

在中我們知道 輸出的 a=10;b=20

然後調用了change()這個方法。

所以應該先輸出。

我們來分析 在change()方法中,參數a=10 ,參數 b=20

所以 a=b,運算之後,a的值就為20了。

而 b = a+b。其實這個時候a=20了 所以b=20+20(b是不變的)

運算之後b=40了

所以 輸出的應該是 a = 20 b=40

然後程序回到main函數中,接著往下走,就該輸出了。

那麼請問處輸出多少?是 a=10 b=20 還是 a=20 b=40?

我們先運行下,看下輸出結果:

接下來我們圖解

圖解說明:

1:先壓棧。程序先運行main方法,根據棧的特點,main方法被壓倒棧底。

在main方法中,int a =10 ; int b = 20; 所以出輸出的就是 a=10 b =20

2:接著change()方法進棧,然後經過運行完成之後,在change方法中 int a = 20 ;int b = 40了。所以在處輸出的a =20 b=4o

3:當棧內運行完成之後,就開始彈棧了。所以-,change方法先被彈棧。(可以理解為子彈已經出槍膛了)

4:接著main方法,所以處輸出的就是 main 方法中的a 和 b的值了。從圖中我們可以看出,a = 10;b=20.所以在處輸出的是 10和20

二:地址值傳遞及圖解

如下圖:

思考:

處應該輸出的是2

處(在changeArr方法裡面的)輸出的是多少?

處輸出的是多少?

分析:

因為 arr[i]%2==0 這句代碼意思就是:arr中第i個元素如果模 2 == 0

才會執行arr[i]*=2這句代碼的意思就是:arr[i]= arr[i]*2;

至於 模運算(%)是什麼和arr[i]*=2是什麼,可以回顧下之前文章。

所以處輸出的是4.

那麼應該是什麼?

請看運行結果:

內存圖解;

圖解說明:

1:同樣main函數先被壓棧 到棧底

2:在堆區創建了arr數組並初始化了分別為1,2,3,4,5 所以在輸出arr第二個元素就是2

3:接著changeArr方法進棧

4:同樣 將數組 arr的地址指想了changeArr方法,

5:經過changeArr方法運算之後,數組第二個元素就變成4 ,第四個元素變成8。所以在列印出的是4

6:程序運行完成changeArr被彈棧(子彈出膛)。也就是引用arr數組的地址值被切斷了。如圖中被劃斷的

7:接著運行main方法,此時main方法中arr的地址值依然指向的是 0x0011這個。我們從堆區中可以看到,在堆區中的arr=

所以在列印出arr中第二個元素就是4

三:總結

通過本節學習,我們需要掌握

1:Java中值傳遞和址傳遞的區別

值傳遞,值是多少,就是多少。

址傳遞,有可能會變化的。如果其他方法引用這個地址值之後,進行處理,那麼就會影響最終結果。

下節預告:

下節開始我們將做個小項目:簡單的《學生管理系統》,通過這個小項目,可以把之前學過的串聯起來,一起回顧java基礎語法。歡迎學習下一篇:《從零學java筆錄-第37篇基礎語法完結小項目練習-學生管理系統 基礎版》

歡迎關注凱哥公眾號:凱哥Java

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 凱哥java 的精彩文章:

從零學java筆錄第35篇練習2通過人查出所在班級求年銷售額
從零學java筆錄-第35篇練習2通過人查出所在班級和年銷售
從零學java筆錄-第34篇二維數組遍歷 查找3年級2班的Z
從零學java筆錄-第33篇二維數組格式3 圖解內存存儲
從零學java筆錄-第32篇 二維數組格式2 圖解內存存儲

TAG:凱哥java |

您可能感興趣

ajax傳遞參數給springmvc總結「轉」
ajax傳遞list集合
180514 防彈再度與Steve Aoki合作《無法傳遞的真心》收入新專輯
Art School 2019秋冬男裝系列——傳遞包容性的設計
高級域滲透技術之傳遞哈希已死-LocalAccountTokenFilterPolicy萬歲
[Infinite][新聞]180309 李成種傳遞殘奧會聖火 傳播正能量
2018ChinaJoy見證產業發展,傳遞中國精神
用球鞋傳遞愛!Nike Air Force 1 Low 「Love」 即將登場
Shell 傳遞參數
190422 易烊千璽登《V Magazine》4月電子刊封面 當代先鋒傳遞自由態度
通過Microsoft Office和YouTube視頻傳遞惡意軟體的PoC攻擊
6400萬四攝印度全球首次公開體驗 realme潮流周邊傳遞真我態度
微軟將把Windows Defender防火牆傳遞給 Linux 子系統
提高報警電話信息傳遞效率,RapidSOS獲3000萬美元融資
張一騰新歌《This Is How We Roll》乘勝追擊 用音樂傳遞真摯態度
Vue項目獲取後端傳遞json數據並在前端給json數組添加自定義數據
加速AI商業進程,微軟Build 2018傳遞了什麼?
Angel BIns鞋子募捐系列:傳遞
ActiveMQ消息傳遞的兩種方式
Dynaudio 傳遞監聽音箱新理念