代码之家  ›  专栏  ›  技术社区  ›  Jilson

如何在Java 8中评估第2行?[复制品]

  •  1
  • Jilson  · 技术社区  · 6 年前
    int f = 1;
    f = f++;
    System.out.println(f);
    

    后递增运算符的优先级高于赋值运算符,因此 我假设f的值(即1)用于赋值,f递增,则输出为2(因为f的值现在为2) 但是输出是1,但是怎么做呢?我错在哪里?

    我的解释在下面的代码中得到了正确的答案

    int f = 1;
    int g = f++;
    System.out.println(f);
    

    在这种情况下,输出为2。

    1 回复  |  直到 6 年前
        1
  •  7
  •   Eran    6 年前

    在计算变量值之前,不能将值赋给该变量。因此你必须评估 f++ 第一。从那时起 f++ 返回1,这是分配给 f ,它覆盖 f .

    您的第二个片段是完全不同的场景,因为您将 f++ 到另一个变量,因此 f 不会被覆盖。