Fragmento de una conferencia con un mentor como parte del curso de Codegym University. Inscríbete al curso completo.


"Tú otra vez, Amigo. Bueno, hola".

"¿Parece que no estás muy feliz de verme, Diego?"

"Tengo la impresión de que crees que ya has aprendido todo lo que hay que saber sobre los métodos en Java".

"Oh, yo no..."

"¡No lo creo! Ni siquiera sabes la mitad".

"Claro, no me disgusta...

"Está bien, basta de charla. Es hora de comenzar. Y comenzaremos con algo simple. Por ejemplo, el hecho de que Java tiene una declaración de retorno . Te permite terminar instantáneamente un método en el que se llama. Aquí está la declaración:

return;

"Es simple: la palabra solitaria returnseguida de un punto y coma. Tan pronto como el programa ejecuta esta declaración, el método actual sale y el método de llamada continúa.

"Si returnse llama al mainmétodo, el mainmétodo terminará inmediatamente y con él todo el programa.

Ejemplo:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {
     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)
   {
     int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};
     fill(months, 2, 10, 8);
   }
}
El fill método llena parte de la matriz pasada con value.

La parte de la matriz a llenar está definida por los índices from y to.

Si from es menor 0o to  mayor que la longitud de la matriz, el método finaliza inmediatamente.

"El programa anterior tiene un fillmétodo que llena la matriz que se le pasa con value. No llena toda la matriz, solo la parte especificada por los índices fromy to.

"Al comienzo del fillmétodo, los valores pasados ​​se verifican para garantizar que sean válidos. Si fromes menor que 0 o tomayor que la longitud de la matriz, el fillmétodo finaliza inmediatamente (ejecuta una returndeclaración)".

"Entendido. ¿Eso es todo lo que hace esta declaración?"

"En realidad, la returndeclaración es más útil de lo que crees. Es tan útil que se encuentra en casi todos los métodos de Java. Y ahora te guiaré para que comprendas por qué es así.

Métodos con un resultado,void

"Probablemente recuerdes que hay declaraciones y expresiones . ¿Cuál es la diferencia entre ellas?"

"Si no me equivoco, una expresión, a diferencia de una declaración, tiene un significado que puede usarse en alguna parte".

"Correcto. Y, en Java, los métodos también pueden tener un valor . Y esta es una muy buena noticia: los métodos no solo pueden hacer algo en función de los parámetros de entrada, sino también, por ejemplo, para evaluar algo y devolver el resultado de el calculo

"Por cierto, ya has encontrado tales métodos:

double delta = Math.abs(d1 - d2);
El abs()método devuelve un doble
Scanner console = new Scanner(System.in);
int x = console.nextInt();

El nextInt()método devuelve unint
String str = "Hello";
String s2 = str.toUpperCase();
El toUpperCase()método devuelve unString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

El copyOf()método devuelve unint[]

"Cada método solo puede devolver un valor de un tipo predeterminado . El tipo de devolución se determina cuando se declara el método:

public static Type name(parameters)
{
  method body
}

Donde namees el nombre del método, parameterses la lista de parámetros del método y typees el tipo de resultado que devuelve el método.

Para los métodos que no devuelven nada, hay un tipo de marcador de posición especial: void.

"En otras palabras, si escribo mi método y no quiero devolver nada, entonces declaro que el tipo del método es void, ¿y eso es todo?"

"Sí. Y también debo decir que Java tiene muchos de esos métodos.

Devolviendo un resultado

"Descubrí cómo declarar un método que devuelve el resultado de un cálculo/trabajo. ¿Cómo devuelvo el resultado del método mismo?"

"Esa es una pregunta válida. La returndeclaración nos ayuda aquí una vez más. Pasar un resultado de un método se ve así:

return value;

"La returndeclaración terminará el método inmediatamente. Y valuees lo que el método debe devolver al método de llamada cuando sale. El tipo de valuedebe coincidir con el Typeespecificado en la declaración del método. Aquí hay algunos ejemplos para reforzar lo que ha aprendido:

Ejemplo 1. El método calcula el mínimo de dos números:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
El método devuelve el mínimo de dos números.

Si a < b
regresa a
De lo contrario
regresab

Ejemplo 2. El método duplica la cadena que se le pasa nvarias veces:

String multiple(String str, int times)
{
   String result = "";

   for (int i = 0; i < times; i++);
     result = result + " "+ str;
   return result;
}
El método toma dos parámetros: una cadena y el número de veces que se debe repetir la cadena.
Se crea una cadena vacía para el resultado futuro.

En un ciclo con timesiteraciones, strse agrega un espacio y la cadena a la cadena result.
La cadena resultse devuelve como resultado del método.

Ejemplo 3: El método calcula el máximo de dos números utilizando el operador ternario:

int max(int a, int b)
{
   return (a > b ? a : b);
}
El método devuelve el máximo de dos números.

volver (si a > b, entonces a, de lo contrario b)

"Excelente. ¡Los métodos son mi nuevo superpoder!"

"Solo si practicas lo suficiente en tareas prácticas. Cambio y fuera".