Java中+和+ =之间的区别?

-3 java math sum

可以解释一下为什么我想对一些数字求和时为什么会有差异?

int a = 4;
int b = 6;
int e = 10;

int wynik1 = a += b += e; //so it is 20. 
System.out.println(wynik1);
int wynik2 = a + b + e; 
System.out.println(wynik2); // so it is 46.... 
Run Code Online (Sandbox Code Playgroud)

我应该只使用Always +=代替+吗?我很困惑,因为当我学习循环(例如,循环)时,我正在使用for (int p = 20; p<40; p=p+ 5)它并且运行良好。

为什么是46?

Psh*_*emo 5

在大多数情况下(例外a += b等同的a = a + b

所以

int wynik1 = a += b += e; //so it is 20. 
Run Code Online (Sandbox Code Playgroud)

与...相同

int wynik1 = (a = a + (b = b + e)); // so it is 20.
Run Code Online (Sandbox Code Playgroud)

意思就是

  • 首先b = b + e将执行b6 + 10 = 16
  • 则由于b16 a将具有4 + 16 = 20结果被分配
  • 最终将分配给wynik1

因此,在该行之后(a = a + (b = b + e))(或在您的情况下a += b += e;),我们的变量将包含以下值:

  • a = 20
  • b = 16
  • e = 10e因为e=..我们的代码中没有,所以没有变化)

这应该解释为什么

int wynik2 = a + b + e; //20 + 16 + 10
Run Code Online (Sandbox Code Playgroud)

46