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