为什么i + 1会递增,而i ++却不会

时间:2019-01-07 11:46:22

标签: java

让我说出这段代码:

public class Incrementor {

    private int i;

    public int getInt(){
        return i;
    }

    private void incrementA(){
        i = i+1;
    }

    private void incrementB(){
        i = i++;
    }
}
  • 当我在致电incrementA()之前致电getInt()时,该值为1。
  • 当我在致电incrementB()之前致电getInt()时,该值为0。

3 个答案:

答案 0 :(得分:5)

任务

i = i++;

基本上等同于

// These two lines corresponds to i++
int temporary_variable = i;
i = i + 1;

// This line is your assignment back to i
i = temporary_variable;

后缀++运算符在递增之前返回 old 值。

如果您要做的只是增加变量,则无需赋值,因为它内置在++操作本身中:

private void incrementB(){
    i++;  // Increment i by one
}

答案 1 :(得分:4)

i++返回增量发生之前的i的值。代码i = i++等于i = i

答案 2 :(得分:3)

    i = i++;

虽然此语法非常有效,但它并没有按照您的想法进行。应该是:

    i++;

i++是一个后递增运算符,表示当用作表达式的右侧时,它会在递增i之前返回i的值。