Java i++;操作说明
可能重复:Java i++;操作说明,java,Java,可能重复: 在Test1中,i将其值增加1,并返回旧值,并将其增量值保留在i变量中。但是在Test2中,i将其值增加1,并返回其旧值,并且也发生了增量。他们是否为未在i变量中赋值的增量制作i的副本。Test2中的操作步骤是什么 Test1 int i = 0; System.out.print(i++); System.out.print(i); 产出01 Test2 int i = 0; i = i++; System.out.println(i); 输出0语句i=i++在Java中具
在Test1中,i将其值增加1,并返回旧值,并将其增量值保留在i变量中。但是在Test2中,i将其值增加1,并返回其旧值,并且也发生了增量。他们是否为未在i变量中赋值的增量制作i的副本。Test2中的操作步骤是什么 Test1
int i = 0;
System.out.print(i++);
System.out.print(i);
产出01
Test2
int i = 0;
i = i++;
System.out.println(i);
输出0语句
i=i++
在Java中具有定义良好的行为。首先,将i
的值推送到堆栈上。然后,变量i
递增。最后,堆栈顶部的值弹出并分配到i
。最终的结果是什么也没有发生——一个智能优化器可以删除整个语句。i=i++
是一个复杂的构造,它真正的作用如下:
int iOld = i;
i = i + 1;
i = iOld;
您只想使用
i++
作为独立语句。当变量后面出现++
运算符时,如您的示例i++
中所示,i的增量发生在操作结束后。
这就是为什么第一个示例中的第一个打印为零,您还没有添加,然后第二个打印为1
第二个示例与保存i,然后递增i,然后将原始值放回相同
i++
它本身就是一个操作员
您可以使用
++i
对第一个进行实验,这将在执行打印操作之前增加i@Eng.Fouad这些情况中没有一个与此情况相匹配要自学,请尝试执行“int i=0;i++;System.out.println(i);”如果您感兴趣,请您向我解释一下i++操作中发生了什么。i++
是我三步过程的前两步:保留i
的值,然后增加i
。这很奇怪,因为您可能期望i=i++代码>与:i=i=i+1代码>。因为i++本身就意味着:i=i+1
;然而,这也解释了为什么循环i=0当这样构造时,代码>保持0并循环以获得永恒性。