本節(jié)主要內(nèi)容:
1:一維數(shù)組在動態(tài)賦值在內(nèi)存中圖解。
2:本節(jié)總結(jié)&下節(jié)預(yù)告
本文出處:《凱哥陪你學(xué)系列之java基礎(chǔ)篇.Java基本語法篇》中第24篇 數(shù)組3 一維數(shù)組在內(nèi)存中圖解
如上面的代碼我們先讀代碼:
第13行 在主函數(shù)(main()) 中創(chuàng)建了一個int 類型的一維數(shù)組長度等于3
在對應(yīng)堆馒吴、棧中俭厚。
1:聲明數(shù)組&由系統(tǒng)初始化默認(rèn)值
流程說明:
1.1:系統(tǒng)先執(zhí)行main方法。所以main方法被壓棧到最下面
而int [] arr 又是main方法的局部變量澡刹。所以也在棧中(見上圖棧區(qū))
1.2:在堆區(qū)系統(tǒng)先創(chuàng)建三個連續(xù)的區(qū)域呻征。對應(yīng)的內(nèi)存地址為:[I@39ff48d8
然后給每個對應(yīng)所以都賦默認(rèn)值0(見上圖堆區(qū))
1.3:系統(tǒng)將1.2中堆區(qū)創(chuàng)建的連續(xù)空間的地址值給arr
1.4:所以在第14行,我們輸出arr在內(nèi)存中的地址就是[I@39ff48d8
2:動態(tài)給數(shù)組arr賦值
第16.17.18行操作如下:
流程說明:
2.1: 在動態(tài)賦值的時候罢浇,系統(tǒng)先根據(jù)arr對應(yīng)堆區(qū)的地址值找到對應(yīng)連續(xù)空間
2.2:然后根據(jù)對應(yīng)索引替換相應(yīng)的值
3:輸出新賦值的數(shù)據(jù):
所以在19陆赋、20行輸出的實(shí)際值就是
在堆區(qū)地址值為[I@39ff48d8的連續(xù)區(qū)域中,下標(biāo)索引為1和2的值嚷闭。
從上圖中我們可以看到對應(yīng)的值就是15 和30
所以打印到控制臺上的值就是 15 和30
完整圖:
思考:
以上這些為什么輸入的結(jié)果如下圖:
圖解如下:
本節(jié)總結(jié):
通過本節(jié)學(xué)習(xí)攒岛,需要理解:
1:一維數(shù)組動態(tài)賦值,在內(nèi)存中是怎么處理的
下節(jié)預(yù)告:
通過本節(jié)學(xué)習(xí)我們知道了動態(tài)給數(shù)組賦值胞锰,既然有動態(tài)賦值灾锯,那么是不是也有靜態(tài)賦值呢?靜態(tài)賦值又是什么樣子呢嗅榕?請學(xué)習(xí)下一篇:《從零學(xué)java筆錄-第25篇 數(shù)組4 數(shù)組的初始化靜態(tài)初始化及內(nèi)存圖》
歡迎關(guān)注凱哥公眾號:凱哥Java
歡迎訪問凱哥個人網(wǎng)站:www.kaigejava.com
本文在凱哥個人網(wǎng)站所在位置:http://www.kaigejava.com/article/detail/94