Java 中的后置自增运算符
问题:
在下面的代码片段中,为什么后置自增运算符 j 是否将 0 赋给 j?
public class Test { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 } }
根据《Java Puzzlers》一书的作者,语句 j = j 类似于以下序列:
temp = j; j = j + 1; j = temp;
然而,语句 a = b 为 b 赋值 1,这与后置增量运算符的预期行为相矛盾。
答案:
以下错误争论在于应用增量规则,然后分配给 a = b 但不分配给 j = j 。 a = b 的正确运算顺序是:
temp = b; b = b + 1; // increment a = temp; // assign
将相同的规则应用到 j = j ,我们得到:
j = j; j = j + 1; // increment
由于 j 的初始值为 0,后自增运算符返回 0,因为表达式中使用了自增前的 j 值。
因此,j 的最终值为 0,因为赋值语句的计算结果为 j = 0。
以上是为什么Java中j = j给j赋值0?的详细内容。更多信息请关注PHP中文网其他相关文章!