Java i ++操作说明

时间:2012-07-19 23:05:36

标签: java

  

可能重复:
  What is the difference between a += b and a =+ b , also a++ and ++a?
  What is x after “x = x++”?

在Test1中,i将其值递增1并返回旧值并将其增量值保存在i变量中。但是在Test2中,我将其值增加1并返回其旧值,并且还会发生增量。他们是否为i中的变量分配了i的副本。 Test2中的操作步骤是什么。

测试1

int i = 0;
System.out.print(i++);
System.out.print(i);

输出01

的Test2

int i = 0;
i = i++;
System.out.println(i);

输出0

3 个答案:

答案 0 :(得分:15)

语句i = i++在Java中具有明确定义的行为。首先,i的值被压入堆栈。然后,变量i递增。最后,弹出堆栈顶部的值并将其分配到i。最终结果是没有任何反应 - 智能优化器可以删除整个语句。

答案 1 :(得分:3)

i = i++;是一个棘手的构造,它的确如下所示:

int iOld = i;
i = i + 1;
i = iOld;

您只想将i++;用作独立声明。

答案 2 :(得分:1)

++运算符出现在变量之后时,如示例i++中,i的增量在操作结束后发生。 这就是为什么第一个例子中的第一个打印是零,你还没有添加,然后第二个是1。

第二个示例与保存i相同,然后将其递增,然后放回原件。

i++

是运营商本身。

您可以使用++i对第一个进行试验,这将在执行打印操作之前增加i