首页 > Java > java教程 > 正文

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

DDD
发布: 2024-10-27 03:26:29
原创
533 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板