首页  >  文章  >  Java  >  为什么Java中j = j给j赋值0?

为什么Java中j = j给j赋值0?

DDD
DDD原创
2024-10-27 03:26:29462浏览

Why does j = j   assign 0 to j in Java?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn