i++与++i的误解

Posted anjuncc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了i++与++i的误解相关的知识,希望对你有一定的参考价值。

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++与++i的误解的主要内容,如果未能解决你的问题,请参考以下文章

Intel Intrinsics pack 命令误解

分享AIOps 平台的误解,挑战及建议

java的优点和误解

Javascript IF 语句将条件误解为函数

Oracle 正则表达式的误解

原谈谈对Objective-C中代理模式的误解