IncrementDecrement 运算符( - )
变量可以分别使用++
和 --
运算符递增或递减 1。
当++
和 --
运算符跟随变量时,它们分别称为后递增和后递减。
int a = 10;
a++; // a now equals 11
a--; // a now equals 10 again
当++
和 --
运算符在变量之前时,操作分别称为预增量和预减量。
int x = 10;
--x; // x now equals 9
++x; // x now equals 10
如果运算符在变量之前,则表达式的值是递增或递减后的变量值。如果运算符跟随变量,则表达式的值是在递增或递减之前的变量值。
int x=10;
System.out.println("x=" + x + " x=" + x++ + " x=" + x); // outputs x=10 x=10 x=11
System.out.println("x=" + x + " x=" + ++x + " x=" + x); // outputs x=11 x=12 x=12
System.out.println("x=" + x + " x=" + x-- + " x=" + x); // outputs x=12 x=12 x=11
System.out.println("x=" + x + " x=" + --x + " x=" + x); // outputs x=11 x=10 x=10
注意不要覆盖后增量或减量。如果在表达式的末尾使用后置/递减运算符,则会发生这种情况,该表达式将重新分配给输入/递减变量本身。输入/减量不会产生影响。即使左侧的变量正确递增,其值也将立即被表达式右侧先前评估的结果覆盖:
int x = 0;
x = x++ + 1 + x++; // x = 0 + 1 + 1
// do not do this - the last increment has no effect (bug!)
System.out.println(x); // prints 2 (not 3!)
正确:
int x = 0;
x = x++ + 1 + x; // evaluates to x = 0 + 1 + 1
x++; // adds 1
System.out.println(x); // prints 3