Retornando Valores de Métodos com a Instrução return em Java
A instrução return
desempenha duas funções cruciais em Java: finalizar a execução de um método e, opcionalmente, devolver um valor ao código que o chamou.
Retornando um Valor de um Método
Quando um método precisa computar um resultado e entregá-lo, a instrução return
é utilizada para essa finalidade.
A sintaxe é simples:
return valor;
O valor retornado pode ser de qualquer tipo de dado, como int
, String
, ou até mesmo objetos. No exemplo abaixo, um método retorna um valor do tipo int
:
public class Program {
public static void main (String args[]) {
int resultado1 = sum(1, 2, 3);
int resultado2 = sum(1, 4, 9);
System.out.println(resultado1); // Imprime 6
System.out.println(resultado2); // Imprime 14
}
static int sum(int a, int b, int c) {
return a + b + c; // Retorna a soma dos parâmetros
}
}
O tipo de retorno (int
, String
, etc.) na assinatura do método funciona como um contrato: ele promete que o método devolverá um valor daquele tipo específico. Se um método declara um tipo de retorno diferente de void
, ele é obrigado a usar a instrução return
para fornecer um valor.
O valor retornado pode ser diretamente utilizado, como ao ser atribuído às variáveis resultado1
e resultado2
no exemplo acima.
É possível ter várias instruções return
dentro de um método, geralmente em blocos condicionais, para retornar valores diferentes com base na lógica interna.
public class Program {
public static void main (String args[]) {
System.out.println(getGreeting(7)); // Good morning
System.out.println(getGreeting(13)); // Good afternoon
System.out.println(getGreeting(18)); // Good evening
System.out.println(getGreeting(2)); // Good night
}
static String getGreeting(int hour) {
if (hour > 24 || hour < 0) {
return "Invalid data";
} else if (hour > 21 || hour < 6) {
return "Good night";
} else if (hour >= 15) {
return "Good evening";
} else if (hour >= 11) {
return "Good afternoon";
} else {
return "Good morning";
}
}
}
No método getGreeting
, que retorna uma String
, a lógica avalia o parâmetro hour
. Assim que uma das condições é satisfeita, a instrução return correspondente é executada, devolvendo a String
apropriada e encerrando o método imediatamente.
Utilizando return para Saída Antecipada em Métodos void
Embora sua função principal seja devolver um valor, a instrução return
também pode ser usada unicamente para controlar o fluxo de execução, forçando a saída de um método antes que ele chegue ao fim. Essa técnica é muito comum em métodos do tipo void
, que não retornam valores.
public class Program{
public static void main (String args[]) {
printGreeting(7); // Imprime: Good morning
printGreeting(13); // Imprime: Good afternoon
printGreeting(32); // Nenhuma saída
printGreeting(2); // Imprime: Good night
}
static void printGreeting(int hour) {
// Validação de dados de entrada
if (hour > 24 || hour < 0) {
return; // Encerra o método imediatamente se a hora for inválida
}
// Se os dados forem válidos, a execução continua
if (hour > 21 || hour < 6) {
System.out.println("Good night");
} else if (hour >= 15) {
System.out.println("Good evening");
} else if (hour >= 11) {
System.out.println("Good afternoon");
} else {
System.out.println("Good morning");
}
}
}
Neste exemplo, o método printGreeting
primeiro valida a entrada. Se a hora for inválida, a instrução return
é executada. Ela interrompe o método naquele ponto, e o código restante de impressão das saudações não é executado.
Quando utilizada em um método void
, a instrução return
deve estar sozinha, sem nenhum valor associado.
📝 Exercícios
Tarefa 1
Analise o método abaixo e identifique o erro de compilação.
public class Program {
public static void main(String[] args) {
System.out.println(getNumber());
}
static int getNumber() {
return "13";
}
}
Resposta
getNumber
está declarado para retornar um int
, mas a instrução return
está tentando devolver uma String
. Em Java, os tipos de dados devem ser compatíveis, e não é possível retornar uma String
onde se espera um int
. Para corrigir, deve-se retornar um valor inteiro, como return 13;
.
Tarefa 2
Complete o método square
no código abaixo. Ele deve calcular o quadrado do parâmetro number
e retornar o resultado.
public class Calculator {
public static void main(String[] args) {
int result = square(7);
System.out.println("O quadrado de 7 é: " + result); // Deve imprimir 49
}
static int square(int number) {
// seu código aqui
}
}
Resposta
square
, você deve multiplicar o parâmetro number
por ele mesmo e retornar o resultado. O código completo ficaria assim:
public class Calculator {
public static void main(String[] args) {
int result = square(7);
System.out.println("O quadrado de 7 é: " + result); // Deve imprimir 49
}
static int square(int number) {
return number * number;
}
}