Java如何更新变量值?

问题描述 投票:0回答:1

所以,这个函数的输出是0。 仅当 java 更新“;”之前的整个语句后的值时,才有可能已完成。如果是这样的话,那么等号运算还有什么意义呢? 不应该对应的是,z =x +y-(x+y);

class HelloWorld {
  public static void main(String[] args) {
  int x = 10;
  int y = 20;
  int z = x += y -= x += y;
  System.out.println(z);
 }
}

我运行了代码,这就是我可以推断的。我确实尝试搜索我的推论是否正确,但是我没有找到任何相关内容?

编辑:我的问题是 - 当 x+=y 最终将 x 的值更新为 30 时,为什么我们在接下来的所有表达式中使用 x = 10 的值?

java
1个回答
0
投票

在 Java 中,“首先评估左手操作数”。 这意味着上面的表达式将像这样求解:

int z = (x = x + (y = y - (x = x + y)));

int z = (x = 10 + (y = y - (x = x + y)));

int z = (x = 10 + (y = 20 - (x = x + y)));

int z = (x = 10 + (y = 20 - (x = 10 + 20)));

int z = (x = 10 + (y = 20 - (30)));

x 将变成 30。

int z = (x = 10 + (-10));

x 将变为 30。 y 将变为 -10。

int z = (x = 0);

x 将变为 0。 y 将变为 -10。

int z = 0; z 将变为 0;

© www.soinside.com 2019 - 2024. All rights reserved.