Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java i++;操作说明_Java - Fatal编程技术网

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并循环以获得永恒性。