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