1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        終于弄明白 i = i++和 i = ++i 了

        共 1310字,需瀏覽 3分鐘

         ·

        2020-12-27 12:40



        寫在前面:前些天看完了JVM的內(nèi)存結(jié)構(gòu),自以為自己是懂了,心里想想不就是分線程共享和線程私有嘛,然后又怎么怎么分怎么怎么的嘛…


        直到遇到了這道題目。說(shuō)句實(shí)話,曾經(jīng)自己做這種運(yùn)算題目,完全是靠腦子空想,然后拿上筆顫抖的寫下一個(gè)自己都不知道正不正確的答案。不過(guò)過(guò)了今天,我終于能確定它的答案了。


        為此,我也專門寫一篇博客,記錄我的學(xué)習(xí)?。?!


        1、題目

        package pers.mobian.questions01;

        public?class?test01?{
        ????public?static?void?main(String[] args) {
        ????????int?i = 1;
        ????????i = i++;
        ????????int?j = i++;
        ????????int?k = i + ++i * i++;
        ????????System.out.println("i="+i);
        ????????System.out.println("j="+j);
        ????????System.out.println("k="+k);
        ????}
        }


        你能肯定并且準(zhǔn)確的說(shuō)出你的答案嗎?


        2、分析

        在做這道題時(shí)我們的腦中要有對(duì)應(yīng)的JVM內(nèi)存結(jié)構(gòu)。其中一個(gè)方法對(duì)應(yīng)一個(gè)棧幀

        此題目我們只需要用到棧幀里面的局部變量表和操作數(shù)棧


        2.1、第一步

        int i = 1

        只是一個(gè)簡(jiǎn)單的賦值操作


        2.2、第二步

        i = i++

        結(jié)果:i還是等于1


        2.3、第三步

        int j = i++

        結(jié)果:i在局部變量表中變成了2,操作數(shù)棧中的 i 值為1,并且將 i 的值返回給 j,即此條語(yǔ)句以后,i = 2,j = 1


        2.4、第四步

        int k = i + ++i * i++

        結(jié)果:局部變量表中的i = 4,k = 11


        2.5、結(jié)果

        3、i = ++i

        按理說(shuō)根據(jù)上面的分析過(guò)程,再來(lái)分析 i = ++i,就很簡(jiǎn)單了。
        我們的 i 變量先在局部變量表中進(jìn)行自增,然后再將 i 進(jìn)棧,然后再把棧中的數(shù)據(jù)返回給我們的變量 i 。

        public?class?test02?{
        ????public?static?void?main(String[] args) {
        ????????int?i = 1;
        ????????i = ++i;
        ????????System.out.println(i); // 結(jié)果:i = 2
        ????}
        }


        最后的最后:本文的思考過(guò)程和計(jì)算推導(dǎo)僅針對(duì)Java語(yǔ)言

        來(lái)源:https://urlify.cn/Abyuyy


        題外話:推薦一個(gè)GitHub項(xiàng)目,這個(gè) GitHub 整理了上百本常用技術(shù)PDF,絕大部分核心的技術(shù)書籍都可以在這里找到,GitHub地址:https://github.com/gsjqwyl/awesome-ebook(電腦打開(kāi)體驗(yàn)更好),地址閱讀原文直達(dá)。麻煩打個(gè)給個(gè)Star,持續(xù)更新中...


        ---END---

        文末福利




        瀏覽 79
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            人人操人人舔 | 五月天色婷婷亚洲麻豆 | 免费看片网站91 | 欧美日韩性爱 | 午夜精品蜜桃 | 女人裸体电影 | 囚禁h强制h狠虐h | 亚州操逼视频 | 国产成人精品a v久久 | 性欧美大战久久久久久久免费观看 |