Java代码输出的说明 - postIncrement运算符

时间:2014-10-06 11:03:55

标签: java

我正在寻找代码后端逻辑的答案。

int i=4;
System.out.println("Output"+ (i += i++));
System.out.println("Output Step 2"+ i);

两种情况下答案都是8。现在第一步,答案8非常自然,i += i++转换为i = i + i++;。

由于i++是后增量运算符,它应该在步骤2中将值增加到9.我理解的缺陷是什么?

4 个答案:

答案 0 :(得分:3)

System.out.println("Output"+ (i += i++)); // sum will be 8, i=8

然后发布i++运算符不会产生任何影响,因为在此之前发生了总和。

确保Java按值传递。

实际上会发生什么?

int i=4 1

System.out.println("Output"+ (i += i++)); 2 3 4 5

System.out.println("Output Step 2"+ i); 6

您可以使用Jeliot

尝试此操作

答案 1 :(得分:2)

在我看来,第一个i ++被分配i + = i ++删除。

答案 2 :(得分:2)

您的代码相当于:

int i=4;

int temp = i + i; // 8
i = i + 1;
i = temp;         // still 8

System.out.println("Output"+ i);        //8
System.out.println("Output Step 2"+ i); //8

因此在两种情况下结果都是8

答案 3 :(得分:2)

当您使用" i + = i ++"时,i变量的存在值在从1递增之前添加到自身。添加值后,将值从1增加。这就是System.out.println("输出" +(i + = i ++));正在显示"输出8"作为输出。

此外,如果您使用i ++,则该更改不会影响原始变量。这就是为什么你在第二个输出也得到相同的结果。