La differenza è data dall'operatore di incremento. Nel primo caso si tratta di un post incremento nel secondo di un pre incremento.
outputcodice:class Prova { public static void main(String[] args) { int x = 10; System.out.println("x: "+x); System.out.println("x++: "+(x++)); // Riporto al caso iniziale x = 10; System.out.println("++x: "+(++x)); } }
In poche parole, visto dal punto di vista teorico è così:codice:x: 10 x++: 10 ++x: 11
x = 10;
"stampa x"
"incrementa x"
x = 10;
"incrementa x"
"stampa x"
Allo stesso modo vale l'assegnamento; nel tuo primo caso, prima avviene l'assegnamento ad y, e poi il decremento. Nel secondo è l'opposto, prima il decremento e poi l'assegnamento.![]()