Galera estou começando em java e apareceu uma dúvida aqui na parte de pré e pós incremento.
Se eu executo o código :
class Main{
public static void main(String[] args){
int i = 5; //6
int x = i++; //5
System.out.println(i);
System.out.println(x);
}
}
Os resultados são i =6 e x =5, eu entendi que o valor de x é 5 porque o pós incremento só acrescentaria 1 depois dessa linha, mas porque o valor de i se alterou ? Porque i armazenou o valor de uma operação que eu fiz abaixo ? Até então eu pensava que essas declarações eram independentes, se eu fizer por exemplo:
int i = 5;
int x = i+5;
System.out.println(i);//5
System.out.println(x);//10
O valor de i não é alterado pra 10, é mantido em 5 … a lógica não deveria ser a mesma ?
i++ é uma operação completa, que altera o valor de i . É equivalente à:
i = i + 1;
Independente se é pré ou pós incremento, o fato de o valor de i estar sendo passado à outra variável não muda o fato de que a operação i = i + 1 será executada.
Inclusive, você pode executar esse comando isoladamente:
int i = 5;
i++; // i passa a ser 6
i++; // i passa a ser 7
int x = i + 5; // x passa a ser 12
Exato, entendo que o valor de i não é alterado pois não tenho nenhuma atribuição a ele, estou somente somando ele a um valor e atribuindo o resultado a outra variável (no caso x).
Mas quando eu tenho:
int i = 5; //6
int x = i++; //5
A única atribuição que vejo a i é 5 .
Vi que o @TerraSkilll disse que i++ é como se fosse i = i+1, então, independente de eu fazer a atribuição de i++ a i , o valor (de i)é atualizado ?