if语句中i ++与i = i + 1的区别是什么?

时间:2015-05-16 21:38:14

标签: java if-statement

对于第一个代码,

int i = 1;
while (i < 10)
    if ((i++) % 2 == 0)
        System.out.println(i);

系统输出:3 5 7 9

对于第二个代码,

int i = 1;
while (i < 10)
    if ((i=i+1) % 2 == 0)
        System.out.println(i);

系统输出:2 4 6 8 10

为什么两个输出不同但公式相同?

2 个答案:

答案 0 :(得分:5)

如果您使用i++,旧值将用于计算,之后i的值将增加1。

对于i = i + 1,情况恰恰相反:它将首先递增,然后才会进行计算。

如果您希望第二种情况的行为与第一种情况相同,请使用++i:在这种情况下,i将在计算之前首先递增。

有关详细信息和更多技术说明,请查看docs for Assignment, Arithmetic, and Unary Operators

答案 1 :(得分:0)

i = i+1将增加i的值,然后返回递增的值。

i++将增加i的值,但返回我在增加之前所持有的原始值。