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

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

i的原始值存放在后開辟的內存中,給剛開始的i進行自加,最后再將后面內存中的i賦給剛開始的i.
我們來看看這兩個程序反編譯的結果
這個是i=i++;

1: iconst_0 整型常量值0進棧
2: istore_1 將棧頂整型數值存入第二個局部變量
3: iload_1 第二個整型局部變量進棧
4: iinc 1, 1 指定整型變量增加指定值
5: istore_1 將棧頂整型數值存入第二個局部變量
j = i++;

反編譯后是這樣的
7: iconst_0 整型常量值0進棧
8: istore_1 將棧頂整型數值存入第二個局部變量
9: iconst_0 整型常量值0進棧
10: istore_2 將棧頂整型數值存入第三個局部變量
11: iload_2 第三個整型局部變量進棧
12: iinc 2, 1 指定整型變量增加指定值
15: istore_1 將棧頂整型數值存入第二個局部變量
總結
到此這篇關于java中i=i++和j=i++區(qū)別的文章就介紹到這了,更多相關java i=i++和j=i++區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot多數據源配置并通過注解實現動態(tài)切換數據源
本文主要介紹了SpringBoot多數據源配置并通過注解實現動態(tài)切換數據源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
Spring Security如何優(yōu)雅的增加OAuth2協議授權模式
這篇文章主要介紹了Spring Security如何優(yōu)雅的增加OAuth2協議授權模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09

