无法在java中完成此任务

Ank*_*han 7 java

任何人都可以解释为什么会发生这种情况

int i=0;
i=i++;
i=i++;
i=i++;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

它打印为零.

pol*_*nts 14

i++是一个后增量(JLS 15.14.2).它递增i,但表达式的结果是递增i 之前的值.将此值重新赋值i有效可使值i保持不变.

像这样分解:

int i = 0;
int j = i++;
Run Code Online (Sandbox Code Playgroud)

j == 0在这种情况下很容易理解为什么.现在,j我们用左手代替i.右手边的值仍然是0,这就是你进入i == 0你的代码片段的原因.