多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > java的參數傳遞與內存分配問題

java的參數傳遞與內存分配問題

來源:程序員人生   發布時間:2015-03-09 08:52:43 閱讀次數:3353次
本文可作為北京尚學堂java課程的學習筆記。
看下面這段代碼。
class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { day = d; month = m; year = y; } //省略get set public void display() { System.out.println (day + " - " + month + " - " + year); } } public class Test{ public static void main(String args[]){ Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); System.out.println("date=" + date); d1.display(); d2.display(); } public void change1(int i){ i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } }

結果以下:
date=9
7 - 7 - 1970
22 - 1 - 2000
我自己不明白的是change2這個方法,它居然沒有改變d1的值!

其實我們想一想也就明白了,在change2運行的時候,棧內存中又多了1塊區域,寄存局部變量b。在change2運行時,b首先指向實參d1的位置。也就是7⑺⑴970 而后new 了1個新的birthday,假定它在堆內存的地址為5421 那末b的值改成了5421 等change2這個方法結束的時候,b這塊內存也就消失了。d1自然甚么都不變嘍。

再看change3
運行這個方法的時候,b首先指向的也是實參d2的位置。我們直接通過b修改了那塊內存的數據,那末d2這個變量的值自然也就改變了。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 香蕉超级碰碰碰97视频在线观看 | 欧美巨大精品欧美一区二区 | 精品久久中文久久久 | 免费一级毛片一级毛片aa | 亚洲精品天堂在线观看 | 国产亚洲网站 | xxxxx大片在线观看 | 国产乱人乱精一区二区视频密 | 性欧美videofree另类 | 国产欧美日韩在线观看一区二区三区 | 亚洲国产精品日韩一线满 | 免费观看中文字幕 | 亚洲精品国产网红在线一区 | 精品视频在线播放 | 99精品小视频| 伊人久久大香线蕉综合7 | 在线视频www | 欧美黑人巨大videos精 | a级艳片武则天 | 亚洲视频精选 | 欧美午夜视频 | xx视频在线 | 91精品国产综合久久久久久 | 岛国性视频播放免费视频 | 日韩视频在线观看一区二区 | 成人欧美一区二区三区在线观看 | 视频一区二区三区自拍 | 在线观看操 | 国产美女一级做受在线观看 | 免费一级欧美片片线观看 | 亚洲成网777777国产精品 | 国产一级毛片国语普通话对白 | 亚洲欧美一区二区三区久久 | 亚洲欧洲无码一区二区三区 | 亚洲一区二区三区四区在线观看 | 性欧美videofree另类17 | www.国产.com | 91啦中文成人 | 亚洲天堂2018av | 亚洲欧美一级视频 | 国产美女一区精品福利视频 |