Sabemos que a declaração de retorno é usada em um determinado método. Um é usado para retornar o resultado da execução da função e o outro é usado em funções com um valor de retorno do tipo vazio. É apenas uma declaração de retorno (retorno;). No momento, é usado para encerrar a execução do método, ou seja, a declaração após essa devolução não será executada. Obviamente, nesse caso, não pode mais haver outra declaração após a declaração de devolução.
Encontrei algumas perguntas usando a declaração de retorno na declaração Try-Catch-Finally
Código 1:
static int intc () {int x = 0; tente {x = 1; return x;} finalmente {x = 3; }} Código 2: Adicione uma declaração de devolução à declaração finalmente do código acima
static int intc () {int x = 0; tente {x = 1; retornar x;} finalmente {x = 3; retornar x;}}Código três:
static int intc () {int x = 0; tente {x = 1; retornar x;} finalmente {x = 3; retornar 0;}} Então, quais são os resultados da execução desses três métodos?
Código 1: retornar 1;
Código 2: retornar 3;
Código 3: retornar 0;
Qual é o princípio?
O motivo é que, quando uma máquina virtual Java executa um método com um valor de retorno, ele criará uma área na lista de variáveis local para armazenar o valor de retorno do método. Ao executar a instrução Return, ele lerá o valor desta área para devolução.
No Código 1, atribua 1 à variável x na tentativa e copie o valor da variável x para a área em que o valor de retorno é armazenado. Finalmente, o valor da área de retorno armazena 1 e um é retornado quando a instrução RETURN é executada.
No código 2, 1 também é atribuído à variável x e, em seguida, o valor de x é copiado para a área em que o valor de retorno é armazenado. Neste momento, o valor da área em que o valor de retorno é 1 e depois pula para a declaração finalmente. No momento, 3 é atribuído à variável local x e copie o valor de x para a área onde o valor de retorno é armazenado e finalmente executa a instrução Return. O valor na área de retorno lida é 3.
No código três, as declarações executadas em tentativa são as mesmas. Depois de pular para a declaração finalmente, 3 é atribuído à variável local, então 0 é atribuído à área em que o valor de retorno é armazenado e, finalmente, a instrução Return é executada. O valor na área de retorno lida é 0, então 0 é retornado.