后期增量如何处理赋值(使用相同的变量)?

时间:2018-01-19 17:56:32

标签: java variable-assignment post-increment

我有这段代码......

for(int i=0; i<10 ; ) {
    i = i++;
    System.out.println("Hello World");
}

输出:

Hello World
Hello World
Hello World...

循环将无限重复,因为i在循环的每次迭代后都保持0

我认为这个表达式i = i++;是多余的...就像这个i=(i=i+1);一样,但它仍然是0所以它是如何工作的?

1 个答案:

答案 0 :(得分:0)

i = i++;是一个棘手的构造,它真正做的是如下:

int iOld = i;
i = i + 1;
i = iOld;

首先,i的值被压入堆栈。然后,变量i递增。最后,弹出堆栈顶部的值并将其分配给i。最终结果是没有任何反应 - a smart optimizer could remove the whole statement.