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

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

    所以i=0,

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

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

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


    posted on 2008-05-14 16:35 henry1451 閱讀(160) 評論(0)  編輯  收藏 所屬分類: Java技術
    主站蜘蛛池模板: 国产妇乱子伦视频免费| 久久九九久精品国产免费直播 | 亚洲欧洲日韩极速播放| 午夜精品一区二区三区免费视频 | 亚洲成人午夜电影| 久久精品人成免费| 亚洲国产日韩一区高清在线| 中文字字幕在线高清免费电影| 亚洲精品无码久久毛片| 又粗又长又爽又长黄免费视频| 亚洲AV无码乱码精品国产| 色吊丝性永久免费看码| 国产成人亚洲综合| 成人片黄网站色大片免费观看APP| 国产亚洲精品美女久久久| 久久久精品免费国产四虎| 亚洲AV日韩AV天堂久久| 最近中文字幕高清免费中文字幕mv| 亚洲色偷偷偷网站色偷一区| 免费观看无遮挡www的视频| 亚洲人成影院77777| 亚洲大尺度无码无码专区| 一区二区三区视频免费观看| 亚洲线精品一区二区三区影音先锋| 国产在线精品观看免费观看| 亚洲国产精品国自产拍AV| 亚欧在线精品免费观看一区 | 亚洲熟妇久久精品| 亚洲不卡AV影片在线播放| 国产黄在线观看免费观看不卡| 精品亚洲综合在线第一区| 毛片免费全部播放无码| 99亚洲精品卡2卡三卡4卡2卡| 亚洲情a成黄在线观看| 亚洲视频免费在线观看| 亚洲第一男人天堂| 国产国拍亚洲精品福利 | 在线观看亚洲电影| 亚洲va国产va天堂va久久| 在线视频精品免费| 色爽黄1000部免费软件下载|