有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java递增变量

我理解增量后和增量前的区别,但我不理解这一点:

int b = 1;
b = b++;
System.out.println(b); // --> 1

为什么要打印1?b得到b++的值(即1)后,b不是增加了吗

int x = 1;
b = x++;
System.out.println(b); // --> 1
System.out.println(x); // --> 2

这是我所期望的行为。在两边使用相同的变量(b=b++)有什么不同


共 (2) 个答案

  1. # 1 楼答案

    你应该从右向左读:

    b++将b增加到2,并返回原始值1的副本

    b =将在其右侧接收值,即b++返回的1

  2. # 2 楼答案

    因为评估的顺序。在语句b = b++;中,首先完全计算右侧。这意味着b的值从1变为2,表达式的结果是1(旧值)。然后执行赋值,将b再次改写为1

    更明确地说,第一个示例在行为上相当于以下代码:

    int b = 1;
    int temp = b++; // b == 2, temp == 1
    b = temp; // b == 1
    System.out.println(b); // --> 1