67,511
社区成员
发帖
与我相关
我的任务
分享
//java源码
public static void main(String[] args) {
int i = 0;
i = i ++;
}
//查看字节码
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_1
7: return
想要详细解释这个问题需要有些储备知识:如计算机是如何进行算术运算的
答案是通过栈(如,Dijkstra双栈算法 )
简单解释一下字节码
iconst_0: 在栈顶压入0
istore_1 :将栈顶元素保存在第一个变量中(即,int i = 0)
iload_1 :将i压入栈顶
iinc 1,1:对第一个变量(即i)进行自增1次的操作,此时i = 1,栈顶为0
istore_1:将栈顶元素保存在第一个变量中(即 i = 0)
所以i的值又被替换为0