En esta ocasión, te voy a explicar para qué sirve void y return en Java, dos cosas que están bien ligadas.
¿Qué es return o los valores de retorno en Java?
Tanto en Java como en la mayoría de lenguajes de programación, la palabra return se usa para devolver un valor desde un método al programa. Por ejemplo, cuando llamas a un método para que haga algo, puedes utilizar return para decirle que te devuelva el resultado de lo que hizo.
En este caso, no vamos a imprimir en la consola el valor, sino que lo obtenemos en el programa, para después usarlo en algo.
Voy a escribir un ejemplo para que te quede más claro.
La clase SumaNumeros, tiene un método para sumar dos valores de tipo int.
Entonces, en la clase Main, creo un objeto de tipo SumaNumeros para poder usar su método suma.
Con este objeto, utilizo la llamada al método con los valores 10 y 7. El println() que tiene el método en la línea 5, hace que el valor 17 se imprima en la consola (u otro valor si le pasamos otros números).
class SumaNumeros { int resultado; // Método de suma con dos valores public void suma(int a, int b) { resultado = a + b; // Se realiza el cálculo System.out.println(resultado); // Se imprime el resultado } } class Main { public static void main(String[] args) { // Objeto de tipo SumaNumeros SumaNumeros suma1 = new SumaNumeros(); // Llamada al método suma con dos números suma1.suma(10, 7); } }
Una cosa que podríamos hacer para guardar el valor en el programa, es almacenar la llamada del método suma en una variable:
class Main { public static void main(String[] args) { // Objeto de tipo suma SumaNumeros suma1 = new SumaNumeros(); // Llamada al método suma con dos números int resultado = suma1.suma(10, 7); // Hacemos una nueva suma con el valor obtenido de la anterior suma1.suma(resultado, 10); } }
Y de nuevo, error:
Error en la consola
java: incompatible types: void cannot be converted to int
El valor que se almacena en resultado, es de tipo void, en lugar de un int (17).
Esto se debe al void que tiene el método suma:
public void suma(int a, int b) { }
Ahora explicaré la palabra void.
En estos casos, debemos quitar la palabra void y poner el tipo de dato que esperamos que devuelva la llamada al método. Además, reemplazaremos el println() que es un elemento de salida que no conserva el dato dentro del programa y en su lugar, dejaremos un return, que devolverá el resultado al hacer la llamada.
Esta devolución, la capturaremos con una variable.
class SumaNumeros { // Método de suma con dos valores public int suma(int a, int b) { int resultado = a + b; // Se realiza el cálculo return resultado; // Se devuelve el resultado } } class Main { public static void main(String[] args) { // Objeto de tipo suma SumaNumeros suma1 = new SumaNumeros(); // Llamada al método suma con dos números int resultado = suma1.suma(10, 7); // Imprimimos el resultado System.out.println(resultado); // Hacemos una nueva suma con el valor obtenido de la anterior resultado = suma1.suma(resultado, 10); // Imprimimos el nuevo resultado System.out.println(resultado); } }
Si utilizas IntelliJ IDEA, verás que aparece un warning:
Warning
Local variable ‘resultado’ is redundant
Este warning dice que la variable local ‘resultado’ es redundante, es decir, que sobra.
Podemos realizar la operación directamente sobre un return:
class SumaNumeros { // Método de suma con dos valores public int suma(int a, int b) { return a + b; // Se devuelve el resultado } }
¿Qué es void?
La palabra reservada void de Java, se utiliza para indicar que un método no tiene return (valor de retorno).
Este método es un ejemplo de ello. Como no necesitamos reutilizar el resultado del println(), lo podemos dejar como void y sin return, para que no devuelva nada, solo que haga lo que tiene que hacer, que en este caso, es imprimir en la consola.
class Usuario { public void saludo() { System.out.println("¡Hola!"); } }
Dejamos el capítulo aquí. Seguimos con nuevos temas en el próximo.
Todo el temario del curso Java aquí.
Aun , debo estudiar mas….
Aun no entiendo lo suficiente…..
Entendí mejor viendo el vídeo, ya se la diferencia a al menos una idea. 🙂
nose