java中i=i++和j=i++的區(qū)別小結(jié)
i=i++;j=i++的區(qū)別
i=i++-----------在java中 這個(gè)語(yǔ)句的前后順序應(yīng)該是這樣的(tmp=i;i++;tmp==i)
java的編譯器在遇到i++和i- -的時(shí)候會(huì)重新為變量運(yùn)算分配一塊內(nèi)存空間,以存放原始的值,而在完成了賦值運(yùn)算之后,將這塊內(nèi)存釋放掉,下面首先看一下如果是j=i++的情況:

i的原始值存放在后開(kāi)辟的內(nèi)存中,最后這個(gè)值將賦值給j,這樣j=i++后,j就會(huì)得到i的值,而i又將自加,所以,在釋放內(nèi)存之后,原來(lái)存放j和i的地方將得到值將是:j(此時(shí)的值等于初始i值)和i(i自加后的值)。
看看i=i++的情況:

i的原始值存放在后開(kāi)辟的內(nèi)存中,給剛開(kāi)始的i進(jìn)行自加,最后再將后面內(nèi)存中的i賦給剛開(kāi)始的i.
我們來(lá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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+redis分布式鎖實(shí)現(xiàn)模擬搶單
這篇文章主要介紹了springboot+redis分布式鎖實(shí)現(xiàn)模擬搶單,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
MyBatis分頁(yè)查詢返回list的時(shí)候出現(xiàn)null的問(wèn)題
這篇文章主要介紹了MyBatis分頁(yè)查詢返回list的時(shí)候出現(xiàn)null的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例
這篇文章主要為大家介紹了Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
java工廠實(shí)例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析
這篇文章主要為大家介紹了BeanFactoryPostProcessor和BeanPostProcessor區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Maven項(xiàng)目讀取resources文件路徑問(wèn)題解決方案
這篇文章主要介紹了Maven項(xiàng)目讀取resources文件路徑問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
java枚舉enum,根據(jù)value值獲取key鍵的操作
這篇文章主要介紹了java枚舉enum,根據(jù)value值獲取key鍵的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
Java 其中翻轉(zhuǎn)字符串的實(shí)現(xiàn)方法
這篇文章主要介紹了Java 其中翻轉(zhuǎn)字符串的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-02-02
Java序列化JSON丟失精度問(wèn)題的解決方法(修復(fù)Long類型太長(zhǎng))
這篇文章主要給大家介紹了關(guān)于Java序列化JSON丟失精度問(wèn)題的解決方法,修復(fù)Long類型太長(zhǎng)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03
SpringMVC?bean實(shí)現(xiàn)加載控制方法詳解
SpringMVC是一種基于Java,實(shí)現(xiàn)了Web?MVC設(shè)計(jì)模式,請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦?;谡?qǐng)求驅(qū)動(dòng)指的就是使用請(qǐng)求-響應(yīng)模型,框架的目的就是幫助我們簡(jiǎn)化開(kāi)發(fā),SpringMVC也是要簡(jiǎn)化我們?nèi)粘eb開(kāi)發(fā)2022-08-08

