一厢洞、分析i = i++
- 代碼
public void method9() {
int i = 10;
i = i++;
}
- 字節(jié)碼
0 bipush 10
2 istore_1
3 iload_1
4 iinc 1 by 1
7 istore_1
8 return
- 字節(jié)碼分析
-
0 bipush 10:將常量10加載到操作數(shù)棧image.png
-
2 istore_1:將操作數(shù)棧頂數(shù)據(jù)存儲(chǔ)到局部變量表下標(biāo)為1的位置上image.png
-
3 iload_1:將局部變量表下標(biāo)為1中的數(shù)據(jù)加載到操作數(shù)棧中image.png
-
4 iinc 1 by 1:將局部變量表下標(biāo)為1中的數(shù)據(jù)+1image.png
-
7 istore_1:將操作數(shù)棧中棧頂數(shù)據(jù)存儲(chǔ)到局部變量表中下標(biāo)為1的位置上image.png
- 小結(jié)
- 1比驻、i的值依然是10
- 2、i的值有那么一刻為11
二、分析i = ++i
- 代碼
public void method10() {
int i = 10;
i = ++i;
}
- 字節(jié)碼
0 bipush 10
2 istore_1
3 iinc 1 by 1
6 iload_1
7 istore_1
8 return
-
0 bipush 10:將常量10加載到操作數(shù)棧中image.png
-
2 istore_1:將操作棧棧頂數(shù)據(jù)存儲(chǔ)到局部變量表中下標(biāo)為1的位置中image.png
-
3 iinc 1 by 1:將局部變量表中下標(biāo)為1的數(shù)據(jù)+1image.png
-
6 iload_1:將局部變量表下標(biāo)為1中的數(shù)據(jù)加載到操作數(shù)棧中image.png
-
7 istore_1:將操作數(shù)棧中棧頂數(shù)據(jù)存儲(chǔ)到局部變量表下標(biāo)為1的位置上image.png
-
小結(jié)
- i的值為11