日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/20 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 终于弄明白 i = i++和 i = ++i 了 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊上方?好好學(xué)java?,選擇?星標?公眾號

重磅資訊、干貨,第一時間送達

今日推薦:騰訊推出高性能 RPC 開發(fā)框架

個人原創(chuàng)100W+訪問量博客:點擊前往,查看更多

來源:https://urlify.cn/Abyuyy


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

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

為此,我也專門寫一篇博客,記錄我的學(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);} }

你能肯定并且準確的說出你的答案嗎?

2、分析

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

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

2.1、第一步

int i = 1

只是一個簡單的賦值操作


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 變量先在局部變量表中進行自增,然后再將 i 進棧,然后再把棧中的數(shù)據(jù)返回給我們的變量 i 。

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

最后的最后:本文的思考過程和計算推導(dǎo)僅針對Java語言

最后,再附上我歷時三個月總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,筆者這幾年及春招的總結(jié),github 1.4k star,拿去不謝!下載方式1.?首先掃描下方二維碼 2.?后臺回復(fù)「Java面試」即可獲取

總結(jié)

以上是生活随笔為你收集整理的终于弄明白 i = i++和 i = ++i 了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。