请解释为什么此代码导致无限循环

Nid*_*pta 2 java loops unary-operator

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

基本上,i的值保持不变,并且保持为0,因此它是无限的.但为什么不改变?

如果我换i=i++i++,它就有用了.(不是无限循环).

brs*_*o05 6

因为表达式之后的i++增量i被评估,所以你基本上是在说i = i.如果这样做i = ++i,它将起作用,因为它i在表达式计算之前递增.