一、分析i = i++
- 代码
public void method9() {
int i = 10;
i = i++;
}
- 字节码
0 bipush 10
2 istore_1
3 iload_1
4 iinc 1 by 1
7 istore_1
8 return
- 字节码分析
-
0 bipush 10:将常量10加载到操作数栈

-
2 istore_1:将操作数栈顶数据存储到局部变量表下标为1的位置上

-
3 iload_1:将局部变量表下标为1中的数据加载到操作数栈中

-
4 iinc 1 by 1:将局部变量表下标为1中的数据+1

-
7 istore_1:将操作数栈中栈顶数据存储到局部变量表中下标为1的位置上

- 小结
- 1、i的值依然是10
- 2、i的值有那么一刻为11
二、分析i = ++i
- 代码
public void method10() {
int i = 10;
i = ++i;
}
- 字节码
0 bipush 10
2 istore_1
3 iinc 1 by 1
6 iload_1
7 istore_1
8 return
-
0 bipush 10:将常量10加载到操作数栈中

-
2 istore_1:将操作栈栈顶数据存储到局部变量表中下标为1的位置中

-
3 iinc 1 by 1:将局部变量表中下标为1的数据+1

-
6 iload_1:将局部变量表下标为1中的数据加载到操作数栈中

-
7 istore_1:将操作数栈中栈顶数据存储到局部变量表下标为1的位置上

-
小结
- i的值为11
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...












