A veces en nuestros desarrollos precisamos que una función nos devuelva un valor para ser utilizado en otra parte del programa o que al terminar de ejecutar las sentencias incluidas en ella, vuelva al punto del código desde donde fue invocada. Java nos proporciona la sentencia return para realizar esta tarea.
Return es una sentencia y tiene dos usos principales. El más conocido es finalizar la ejecución del método en el que aparece, independientemente de que este sea un bucle, o devolver un valor para ser utilizado en otra parte del programa.
Luego de que return provoque la salida del método, el programa devuelve el control a la expresión de llamada, es decir a la línea de código desde donde fue invocada la función que contiene la palabra clave mencionada más arriba, para continuar con el flujo normal del programa.
Como se ha comentado, la sentencia return tiene dos usos principales. Finalizar la ejecución del método en el que aparece, o devolver un valor para se utilizado en otra parte del programa.
Si utilizamos return como sentencia de finalización de un método, declaramos el mismo de manera convencional con la palabra void, aquí tengamos en cuenta que si se intenta devolver un valor desde un método declarado void, aparecerá un error de compilación.
package com.opus4;
import java.util.Scanner;
public class ejemploReturn {
public static void main(String[] args) {
// uso del return como finalización del método
int n;
Scanner entrada = new Scanner(System.in);
System.out.println("Ingrese un número entero: ");
n = entrada.nextInt();
System.out.println("Tabla del número " + n);
for (int i = 0; i <= 10; i++)
System.out.println(n + " x " + i + " = " + (n * i));
return; // No devuelve ningún valor
}
}
Para que un método devuelva un valor debemos aplicar el return de otra manera, la cual se explica a continuación.
Cuando precisamos que la función nos devuelva un valor, la misma debe ser declarada un poco distinta al modo anterior, no se usa la instrucción void, sino que en lugar de void debemos poner el tipo de dato que va a retornar la función o método.
Por ejemplo, si necesitamos que nos devuelva un entero, se pondrá int, si la devolución debe ser una cadena, se pondrá String, y así sucesivamente.
Además el tipo de dato que va a devolver el return, debe coincidir con el tipo de dato que pusimos en la definición del método.
Cualquier método que no sea declarado como void, tendrá que contener una sentencia return para devolver un valor a la línea de código que lo invocó, tal cual podemos verlo en el ejemplo siguiente:
package com.opus4;
import java.util.*;
public class Fecha {
// aquí podemos ver que no se utiliza void, sino el tipo de dato que va a devolver el return
public Date hoy() {
Date a = new Date();
return a;
}
public static void main(String[] args) {
Fecha tiempo = new Fecha();
System.out.println(tiempo.hoy());
}
}
Estos son los dos modos más utilizados para aplicar la sentencia return en nuestros desarrollos.