從零學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筆錄第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 傳遞監聽音箱新理念