有人可以在java中解释这个输出吗?

时间:2011-07-26 05:35:59

标签: java

我运行了以下代码段

int n=0;
for(int m=0;m<5;m++){
n=n++;
System.out.print(n)}

当我预期01234时,我得到输出为00000.有人可以解释为什么

提前致谢

6 个答案:

答案 0 :(得分:4)

n = n++增加n,然后将n设置为增加它之前的值。使用:

n++;

n = n + 1;

但不要试图同时做两件事。它不起作用。

答案 1 :(得分:3)

n=n++;应该只是n++;n=n+1;(如果需要,甚至是n=++n;

n++执行增量,但会在增量发生之前返回n的值。因此,在这种情况下,您正在递增n,但随后将n设置为增量发生前的值,实际上意味着n不会发生变化。

++运算符可以用作前缀或后缀。在后缀形式(n++)中,表达式的计算结果为n,但在前缀情况(++n)中,表达式将计算为n+1。仅仅使用它们就会产生相同的结果,因为n的值会增加1。

答案 2 :(得分:1)

当你有一个++时,运算符可以在变量之前或之后。同样,添加将在执行操作数之前或之后发生。如果该行已阅读:

n = ++n;

然后它会完成你期望它做的事情。

答案 3 :(得分:0)

n = ++n;

也可以工作:-)但是为自己分配一个变量是没用的。要增加n,只需使用

n++;

++n;

答案 4 :(得分:0)

Java在后续增量中使用下一个实例中变量的值。

在代码片段中,循环执行第一次获取n = 0并在操作数处递增。但是增加的值将反映在下一次出现的n而不是当前赋值中,因此0将再次设置为n。我认为这是因为n = n ++是ATOMIC操作。

所以n总是设为0。

要避免这种情况,要么预先递增[++ n]或+1 [n + 1],您的参考会立即更新。

希望这能回答你的问题。

答案 5 :(得分:0)

由于之前似乎没有提及,您也可以使用

n += 1;

如果你真的喜欢任务操作员。