Qual é o resultado da execução do código a seguir?
pacote com.test; public class Inc {public static void main (string [] args) {Inc Inc = new Inc (); int i = 0; Inc.Fermin (i); i = i ++; System.out.println (i); } void Fermin (int i) {i ++; }}O resultado é: 0
O resultado da execução do código semelhante acima em C/C ++ é: 1. Por que isso é isso?
Isso ocorre porque Java usa um mecanismo de variável de cache intermediário:
i = i ++; equivalente a:
temp = i; (i no lado direito do sinal igual)
i = i+1; (I à direita do sinal igual)
i = temp; (i no lado esquerdo do sinal igual)
E i = ++ i; é equivalente a:
i = i+1;
temp = i;
i = temp;
Explicação detalhada:
Existem duas áreas de armazenamento na JVM, uma é a área de armazenamento temporária (uma pilha, chamada pilha abaixo), e a outra é a área variável.
A JVM executará esta declaração como esta:
Etapa 1 JVM Copie o valor de i (seu valor é 0) para a área variável temporária (temp = 0).
Etapa 2 Adicione o valor da área variável I a 1 e o valor de I é 1.
Etapa 3 Retorne o valor da área variável temporária (temp). Observe que esse valor é 0 e não foi modificado.
Etapa 4 O valor de retorno é atribuído a I na área variável e o valor de I é redefinido para 0.
Não há outro espaço temporário ou temporário temporário para salvar I em C/C ++. Todas as operações são concluídas em um espaço de memória, por isso é 1 em C/C ++.
A introdução acima do problema de auto-aumento em Java é todo o conteúdo que compartilhei com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.