java中i=i++和j=i++的區(qū)別小結(jié)
i=i++;j=i++的區(qū)別
i=i++-----------在java中 這個(gè)語句的前后順序應(yīng)該是這樣的(tmp=i;i++;tmp==i)
java的編譯器在遇到i++和i- -的時(shí)候會重新為變量運(yùn)算分配一塊內(nèi)存空間,以存放原始的值,而在完成了賦值運(yùn)算之后,將這塊內(nèi)存釋放掉,下面首先看一下如果是j=i++的情況:
i的原始值存放在后開辟的內(nèi)存中,最后這個(gè)值將賦值給j,這樣j=i++后,j就會得到i的值,而i又將自加,所以,在釋放內(nèi)存之后,原來存放j和i的地方將得到值將是:j(此時(shí)的值等于初始i值)和i(i自加后的值)。
看看i=i++的情況:
i的原始值存放在后開辟的內(nèi)存中,給剛開始的i進(jìn)行自加,最后再將后面內(nèi)存中的i賦給剛開始的i.
我們來看看這兩個(gè)程序反編譯的結(jié)果
這個(gè)是i=i++;
1: iconst_0 整型常量值0進(jìn)棧
2: istore_1 將棧頂整型數(shù)值存入第二個(gè)局部變量
3: iload_1 第二個(gè)整型局部變量進(jìn)棧
4: iinc 1, 1 指定整型變量增加指定值
5: istore_1 將棧頂整型數(shù)值存入第二個(gè)局部變量
j = i++;
反編譯后是這樣的
7: iconst_0 整型常量值0進(jìn)棧
8: istore_1 將棧頂整型數(shù)值存入第二個(gè)局部變量
9: iconst_0 整型常量值0進(jìn)棧
10: istore_2 將棧頂整型數(shù)值存入第三個(gè)局部變量
11: iload_2 第三個(gè)整型局部變量進(jìn)棧
12: iinc 2, 1 指定整型變量增加指定值
15: istore_1 將棧頂整型數(shù)值存入第二個(gè)局部變量
總結(jié)
到此這篇關(guān)于java中i=i++和j=i++區(qū)別的文章就介紹到這了,更多相關(guān)java i=i++和j=i++區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot多數(shù)據(jù)源配置并通過注解實(shí)現(xiàn)動態(tài)切換數(shù)據(jù)源
本文主要介紹了SpringBoot多數(shù)據(jù)源配置并通過注解實(shí)現(xiàn)動態(tài)切換數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Java從JDK源碼角度對Object進(jìn)行實(shí)例分析
這篇文章主要介紹了Java從JDK源碼角度對Object進(jìn)行實(shí)例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12java實(shí)現(xiàn)文件上傳下載和圖片壓縮代碼示例
本文給大家介紹的是項(xiàng)目中經(jīng)常需要用到的一個(gè)常用的功能,使用java實(shí)現(xiàn)文件的上傳下載和圖片的壓縮功能,這里推薦給大家,有需要的小伙伴參考下。2015-03-03Spring Security如何優(yōu)雅的增加OAuth2協(xié)議授權(quán)模式
這篇文章主要介紹了Spring Security如何優(yōu)雅的增加OAuth2協(xié)議授權(quán)模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09詳解Java并發(fā)編程基礎(chǔ)之volatile
volatile作為Java多線程中輕量級的同步措施,保證了多線程環(huán)境中“共享變量”的可見性。這里的可見性簡單而言可以理解為當(dāng)一個(gè)線程修改了一個(gè)共享變量的時(shí)候,另外的線程能夠讀到這個(gè)修改的值。本文將詳解介紹Java并發(fā)編程基礎(chǔ)之volatile2021-06-06