for (int i = 0; i < 10;) {
i=i++;
System.out.println("Hello World" );
}
基本上i的值保持不变,并且保持为0,因此它是无限的。但为什么不改变?
如果我将i=i++
更改为i++
,则可行。 (不是无限循环)。
答案 0 :(得分:6)
因为i++
在评估表达式后递增i
,所以您基本上是在说i = i
。如果你执行i = ++i
那么它将起作用,因为它在评估表达式之前递增i
。
答案 1 :(得分:0)
逻辑上,分配是在评估右侧之后完成的,与任何其他Java分配一样。但是,&#34;后缀增量表达式的值是存储新值之前变量的值。&#34; (JLS, 15.14.2. Postfix Increment Operator ++)
由于赋值,存储增量值之前i
的值保持为零。