Retornando de um método
Existem duas condições que fazem um método retornar:
Quando a chave de fechamento do método é alcançada.
Quando uma instrução return é executada.Existem duas formas de return:
Uma para métodos void (métodos que não retornam valor).
Outra para o retorno de valores.Para métodos void, a instrução return é usada da seguinte forma:
return;
Quando essa instrução é executada, o controle do programa volta para o chamador, saltando qualquer código restante no método.
Exemplo de método com return em um laço for:
O laço for será executado de 0 a 5, pois quando i for igual a 5, o método retornará.
Um método pode ter várias instruções return para diferentes saídas.
Exemplo:
Nesse caso, o método retorna ao terminar ou se um erro ocorrer.
Evite muitos pontos de saída em um método, pois podem desestruturar o código.
Um método bem projetado tem pontos de saída bem definidos.
Resumindo: um método void pode retornar de duas maneiras:
Alcançando a chave de fechamento.
Executando uma instrução return.
Retornando um valor
A maioria dos métodos retorna um valor, mesmo que alguns tenham tipo de retorno void.
Retornar valores é um dos recursos mais úteis dos métodos.
Exemplo de valor de retorno: a função sqrt() que retorna a raiz quadrada.
Valores de retorno têm várias finalidades:
Resultado de um cálculo (ex: sqrt()).
Indicação de sucesso ou falha.
Contém um código de status.O uso de valores de retorno é parte integrante da programação Java.
Métodos retornam valores usando a instrução return valor;, onde valor é o valor retornado.
Essa forma de return é usada apenas em métodos que não têm tipo de retorno void.
Métodos não void devem retornar um valor usando return valor;.
Melhorar a implementação de range():
Em vez de exibir a autonomia, range() deve calcular e retornar o valor.
Vantagem: o valor retornado pode ser usado em outros cálculos.Exemplo modificado de range() para retornar a autonomia em vez de exibi-la.
Saída:
Minivan can carry 7 with range of 336 Miles
Sportscar can carry 2 with range of 168 miles
Quando range() é chamado, ele é inserido no lado direito de uma instrução de atribuição.
A variável à esquerda recebe o valor retornado por range().
Após range1 = minivan.range();, a autonomia de minivan será armazenada em range1.
O método range() agora tem tipo de retorno int, retornando um valor inteiro para o chamador.
O tipo de retorno de um método é importante e deve ser compatível com o tipo de dado retornado.
Se um método deve retornar um tipo double, seu tipo de retorno deve ser double.
O programa pode ser mais eficiente sem usar variáveis intermediárias range1 ou range2.
A chamada a range() pode ser usada diretamente na instrução println().
Exemplo: System.out.println("Minivan can carry " + minivan.passengers + " with range of " + minivan.range() + " Miles");
Nesse caso, minivan.range() é chamado automaticamente dentro de println().
Chamadas a range() podem ser usadas sempre que a autonomia de um objeto Vehicle for necessária.
Exemplo:
if(v1.range() > v2.range())
System.out.println("v1 has greater range");