i++与++i的误解
2016-03-04 01:07
211 查看
javap -c xx.class
{
i=0
i=i++
}
0: bipush 0
2: istore_1 stack ->var1
3: iload_1 var1->stack
4: iinc 1, 1 //var1 =var1+1
7: istore_1 stack ->var1 //var1 被覆盖 值不变
8: return
{
i=0
i=++i
}
0: bipush 0
2: istore_1
3: iinc 1, 1 var1=var1+1
6: iload_1 var1->stack
7: istore_1 stack->var1
8: return
{
int i = 0; //var1
int j=0; //var2
j=i++;
}
0: iconst_0 i->stack
1: istore_1 stack->var1
2: iconst_0 j->stack
3: istore_2 stack->var2
4: iload_1 var1->statck
5: iinc 1, 1 var1=var1+1
8: istore_2 stack(var1 value)->var2
结果 i :1 j:0
结论:++在前后入stack ,++在后,先入stack ,如果只一个变量 先入栈 出栈时被覆盖
{
i=0
i=i++
}
0: bipush 0
2: istore_1 stack ->var1
3: iload_1 var1->stack
4: iinc 1, 1 //var1 =var1+1
7: istore_1 stack ->var1 //var1 被覆盖 值不变
8: return
{
i=0
i=++i
}
0: bipush 0
2: istore_1
3: iinc 1, 1 var1=var1+1
6: iload_1 var1->stack
7: istore_1 stack->var1
8: return
{
int i = 0; //var1
int j=0; //var2
j=i++;
}
0: iconst_0 i->stack
1: istore_1 stack->var1
2: iconst_0 j->stack
3: istore_2 stack->var2
4: iload_1 var1->statck
5: iinc 1, 1 var1=var1+1
8: istore_2 stack(var1 value)->var2
结果 i :1 j:0
结论:++在前后入stack ,++在后,先入stack ,如果只一个变量 先入栈 出栈时被覆盖
相关文章推荐
- SQLAlchemy 学习笔记
- 软件工程与个人项目的结合
- CSS学习(六)-css圆角边框高级效果、边框阴影效果(上)
- 推荐几款实用的Android Studio 插件
- read me of del.sh
- div在各种情况下的居中
- C++栈(stack)
- del.sh
- 学习软件设计模式的书籍
- Web Api如何传递POST请求
- Tomcat 环境搭建
- 正则表达式验证
- raft协议的go语言实现
- Ubuntu配置连接android手机
- JAVA网站高并发解决方案
- caffe之(二)pooling层
- [C++11]_[初级]_[weak_ptr的使用场景]
- ScrollView的滚动监听
- [C++11]_[初级]_[weak_ptr的使用场景]
- 【学习笔记】day2数据存储和界面展现第一天 11_api获取外部存储的真实路径 12_检查外部存储状态