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

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

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

    posts - 60,comments - 71,trackbacks - 0

    public class test
    {
    int i = 0;

    public test()
    {
              i=i ++; 
             System.out.println(i);
    }

    public static void main(String argsp[]) {
    new test();
    }
    }

    結果是0,為什么呢 ?

    java的編譯器搞的鬼!在遇到++和--操作符的時候會重新為原變量分配一塊內存空間,以存放原始的值,而在完成了賦值運算之后,就將這塊內存釋放掉。由于i的原始值存放在后開辟的內存中,這樣i=i++后,由于是先賦值,i就會得到i的原始值(存放在新內存中的數椐),而原來內存位置的i自加后只保留在原來的位置,由于此時i指向已經是新開辟出來的內存地址,所以i的值沒有發送變化!
    換句話說,
    while(true){
       i=i++;
    }
    永遠執行i的值恒等于i的初始值,即使不是0也一樣!下面我把過程寫一下

    i=0;//假設此時內存地址為0x12345678
    i=i++;//系統新開內存地址0x99999999,存放i原始值0,然后0x12345678的存放數據+1操作
          //此時0x12345678=1,0x99999999=0,但是上一步是先給值,所以i的內存地址是0x99999999=0;

    所以i=0,

    但是,如果是
    i=0;
    i++;
    此時i=1,因為0x99999999處新開辟的內存地址沒有給任何引用,所以被丟棄了!i繼續使用0x12345678處值

    你在棧上沒有計算,正確的過程是

    你把i的值0放到棧上
    然后把i變成1,但是棧上還是0
    最后把棧上的0彈出來賦值給i,結果把剛才iinc的結果給沖掉了,i又變成了0


    posted on 2008-05-14 16:35 henry1451 閱讀(149) 評論(0)  編輯  收藏 所屬分類: Java技術
    主站蜘蛛池模板: 免费在线观看一级毛片| 国产一级高清视频免费看| 久久国产乱子伦精品免费看| 好男人资源在线WWW免费| 免费观看成人久久网免费观看| 噼里啪啦电影在线观看免费高清 | 国产aⅴ无码专区亚洲av麻豆| 亚洲国产天堂在线观看| 亚洲精品中文字幕无乱码| 国产精品亚洲色婷婷99久久精品| 永久免费无码日韩视频| 亚洲视频免费在线观看| 免费一看一级毛片| 一本大道一卡二大卡三卡免费| 最近的免费中文字幕视频| 久久亚洲国产午夜精品理论片| 亚洲高清中文字幕免费| a毛片免费观看完整| 亚洲精品国产V片在线观看 | 亚洲国产精品18久久久久久| 未满十八18禁止免费无码网站 | 蜜桃传媒一区二区亚洲AV| 永久免费在线观看视频| 亚洲精品亚洲人成在线观看下载| 国产福利电影一区二区三区,免费久久久久久久精 | 100部毛片免费全部播放完整| 亚洲1区1区3区4区产品乱码芒果 | 九一在线完整视频免费观看 | 亚洲色最新高清av网站| 两性刺激生活片免费视频| 日本亚洲国产一区二区三区| 久草视频在线免费看| 亚洲人成网站999久久久综合| 黄瓜视频影院在线观看免费| 亚洲人成人网站18禁| 亚洲桃色AV无码| EEUSS影院WWW在线观看免费| 亚洲精品偷拍无码不卡av| 全免费a级毛片免费看不卡| 亚洲小说区图片区| 久久国产免费观看精品3|