1. 【118期】面試官:你真的清楚 i = i++和 i = ++i 的區(qū)別嗎?

        共 1433字,需瀏覽 3分鐘

         ·

        2021-01-16 00:14

        程序員的成長之路
        互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
        關(guān)注


        閱讀本文大概需要 2 分鐘。

        來自:blog.csdn.net/qq_44377709/article/details/106643703

        寫在前面:前些天看完了JVM的內(nèi)存結(jié)構(gòu),自以為自己是懂了,心里想想不就是分線程共享和線程私有嘛,然后又怎么怎么分怎么怎么的嘛…
        直到遇到了這道題目。說句實(shí)話,曾經(jīng)自己做這種運(yùn)算題目,完全是靠腦子空想,然后拿上筆顫抖的寫下一個(gè)自己都不知道正不正確的答案。不過過了今天,我終于能確定它的答案了。
        為此,我也專門寫一篇博客,記錄我的學(xué)習(xí)!?。?/section>

        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)確的說出你的答案嗎?

        2、分析

        在做這道題時(shí)我們的腦中要有對(duì)應(yīng)的JVM內(nèi)存結(jié)構(gòu)。其中一個(gè)方法對(duì)應(yīng)一個(gè)棧幀
        此題目我們只需要用到棧幀里面的局部變量表和操作數(shù)棧

        2.1、第一步

        int i = 1
        只是一個(gè)簡單的賦值操作

        2.2、第二步

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

        2.3、第三步

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

        2.4、第四步

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

        2.5、結(jié)果

        3、i = ++i

        按理說根據(jù)上面的分析過程,再來分析?i = ++i,就很簡單了。
        我們的 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
        ????}
        }
        最后的最后:本文的思考過程和計(jì)算推導(dǎo)僅針對(duì)Java語言。

        推薦閱讀:

        【117期】面試官:熟悉JVM嗎?為什么新生代內(nèi)存需要有兩個(gè)Survivor區(qū)?

        【116期】MySQL索引優(yōu)缺點(diǎn)、何時(shí)需要/不需要?jiǎng)?chuàng)建索引、索引及sql語句的優(yōu)化

        【115期】TCP協(xié)議面試10連問,總會(huì)用得到,建議收藏~

        5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號(hào)內(nèi)回復(fù)「2048」,即可免費(fèi)獲?。?!

        微信掃描二維碼,關(guān)注我的公眾號(hào)

        朕已閱?

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 美日韩三级电影 | 又黄又粗a毛片一级 | 色综合成人网 | 韩日在线视频 | 亚洲免费黄色片 |