<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 17,  comments - 14,  trackbacks - 0

          首先,寫一段程序,分析程序執(zhí)行的過程中,堆棧空間的開辟、空間內(nèi)數(shù)據(jù)的寫入和垃圾空間的回收。

        上代碼

    Person

    Demo01

    程序運行結(jié)果為:

    01

    分析程序執(zhí)行過程:

    創(chuàng)建Person類,屬性有name和age,構(gòu)建一個say方法:打印姓名和年齡。

    然后逐句分析Demo01運行過程,及運行過程中堆棧內(nèi)存的開辟、寫入數(shù)據(jù)和回收。

    Person p1 = new Person(); //在棧內(nèi)存中開辟p1,然后用new關(guān)鍵字創(chuàng)建對象,

                                           //也就是在對內(nèi)存中開辟p1所指向的堆內(nèi)存空間。

    Person p2 = new Person(); //在棧內(nèi)存中開辟p2,然后用new關(guān)鍵字創(chuàng)建對象,

                                           //也就是在對內(nèi)存中開辟p2所指向的堆內(nèi)存空間。

    此時的堆棧內(nèi)存:

    02

    接下來的四句話為:

    p1.name = "張三";

    p1.age = 20;

    p2.name = "李四";

    p2.age = 30;

    此時的堆棧內(nèi)存為:

    04

    最后對p1、p2執(zhí)行say方法,結(jié)果為:

    01

    若把程序改一下,加上一句話:p2 = p1;

    程序變?yōu)椋?/p>

    Demo01

    再執(zhí)行:

    執(zhí)行加入的語句之前不變,堆棧空間也和加之前相同,當(dāng)執(zhí)行加入的語句之后,

    堆棧內(nèi)存為:

    05

    此時棧內(nèi)存p2指向p1所指向的堆內(nèi)存空間,而p2之前指向的堆內(nèi)存空間已經(jīng)沒有了棧內(nèi)存的指向,

    因此成為垃圾,就會被回收掉,堆棧內(nèi)存變?yōu)椋?/p>

    07

    再執(zhí)行下面兩句,為p1指向的堆內(nèi)存空間賦值,由于p1、p2指向同一塊堆內(nèi)存,也就相當(dāng)于為p2

    指向的堆內(nèi)存空間賦值,堆棧內(nèi)存變?yōu)椋?/p>

    06

    再執(zhí)行下面兩句,為p2指向的堆內(nèi)存空間賦值,由于p1、p2指向同一塊堆內(nèi)存,也就相當(dāng)于為

    p1指向的堆棧內(nèi)存空間重新賦值,堆棧內(nèi)存變?yōu)椋?/p>

    08

    我們可以看到,棧內(nèi)存p1、p2所指向的同一塊堆內(nèi)存中的數(shù)據(jù)改變了,然后執(zhí)行下面的say方法,

    執(zhí)行結(jié)果為:

    09

    為什么兩句結(jié)果相同呢?因為是程序按語句的順序執(zhí)行,先改變堆內(nèi)存的數(shù)據(jù),后執(zhí)行的say方法,

    所以兩句結(jié)果相同。

    若把程序再改一下,把 p1.say(); 提前

    程序變?yōu)椋?/p>

    Demo01

    執(zhí)行語句 p1.say();  之前,堆棧內(nèi)存為:

    06

    執(zhí)行 p1.say(); 對堆棧內(nèi)存沒有影響,只是輸出此時p1所指向的堆內(nèi)存中的數(shù)據(jù):

    輸出:10 ,然后繼續(xù)執(zhí)行下面的語句。

    執(zhí)行p2.name = "李四"; p2.age = 30;

    為p2指向的堆內(nèi)存空間賦值,由于p1、p2指向同一塊堆內(nèi)存,也就相當(dāng)于為

    p1指向的堆棧內(nèi)存空間重新賦值,堆棧內(nèi)存變?yōu)椋?/p>

    08

    然后執(zhí)行  2.say();  輸出棧內(nèi)存 p2 指向的對內(nèi)存中的數(shù)據(jù):“姓名:李四, 年齡:30”

    完整的程序執(zhí)行完后,輸出結(jié)果為:

    11

    總結(jié):

          語句的排列順序不同,程序執(zhí)行的結(jié)果也不同。

    posted on 2010-10-12 02:55 Mineralwasser 閱讀(246) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    文章檔案(21)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费精品99久久国产综合精品| 国产亚洲精品美女久久久久| 在线观看免费无码专区| 亚洲福利精品电影在线观看| 成全影视免费观看大全二| 亚洲国产亚洲片在线观看播放| 91人成网站色www免费下载| 亚洲国产片在线观看| 国产卡二卡三卡四卡免费网址| 亚洲人成伊人成综合网久久| 亚洲成在人线aⅴ免费毛片| 亚洲AV成人一区二区三区在线看 | 国产激情久久久久影院老熟女免费| 日韩亚洲国产综合久久久| a级毛片免费观看网站| 国产亚洲av片在线观看16女人| 99精品免费视频| 久久亚洲AV无码精品色午夜| 猫咪免费观看人成网站在线| 在线a人片天堂免费观看高清| jizzjizz亚洲日本少妇| 亚洲精品乱码久久久久久不卡| 国产综合免费精品久久久| 亚洲va在线va天堂va888www| 无码人妻精品中文字幕免费东京热| 亚洲偷自精品三十六区| 又大又硬又爽免费视频| 亚洲精品日韩一区二区小说| 免费成人在线观看| 久久青草91免费观看| 亚洲无人区码一二三码区别图片| 免费在线精品视频| 久久久久国色av免费看| 亚洲欧洲日韩极速播放| 亚洲日韩在线第一页| 成人a毛片视频免费看| 亚洲成熟xxxxx电影| 国产在线观看www鲁啊鲁免费| 亚洲高清乱码午夜电影网| 久久亚洲高清综合| 色窝窝免费一区二区三区|