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