Java Language Gli operatori di incremento / decremento (++ / -)

Esempio

Le variabili possono essere incrementate o decrementate di 1 usando rispettivamente gli operatori ++ e -- .

Quando gli operatori ++ e -- seguono le variabili, sono chiamati rispettivamente post-incremento e post-decremento .

int a = 10;
a++; // a now equals 11
a--; // a now equals 10 again

Quando gli operatori ++ e -- precedono le variabili, le operazioni sono chiamate rispettivamente pre-incremento e pre-decremento .

int x = 10;
--x; // x now equals 9
++x; // x now equals 10

Se l'operatore precede la variabile, il valore dell'espressione è il valore della variabile dopo essere stato incrementato o decrementato. Se l'operatore segue la variabile, il valore dell'espressione è il valore della variabile prima di essere incrementato o decrementato.

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

Fare attenzione a non sovrascrivere post-incrementi o decrementi. Ciò accade se si utilizza un operatore post-in / decrement alla fine di un'espressione che viene riassegnato alla variabile in / decrementata stessa. L'in / decremento non avrà effetto. Anche se la variabile sul lato sinistro viene incrementata correttamente, il suo valore verrà immediatamente sovrascritto con il risultato valutato in precedenza dal lato destro dell'espressione:

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!) 

Corretta:

int x = 0;
x = x++ + 1 + x;        // evaluates to x = 0 + 1 + 1
x++;                    // adds 1
System.out.println(x);  // prints 3