1. La returndeclaración

¿Crees que ya has aprendido todo sobre los métodos de Java? Lo que sea que creas que sabes, todavía no sabes ni la mitad.

Comencemos con algo simple. Por ejemplo, Java tiene una declaración de devolución que le permite terminar instantáneamente el método que lo 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 inmediatamente y la llamada continúa.

Si returnse llama en el 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 que se va 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 fill método, los valores pasados ​​se verifican para garantizar que sean válidos. Si fromes menor que 0, o si to es mayor que la longitud de la matriz, el fillmétodo finaliza inmediatamente (ejecuta una returninstrucción).

Esta returndeclaración es útil: prácticamente todos los métodos en Java tienen uno, y he aquí por qué.



2. Métodos con resultado,void

Recuerde que una vez nos dimos cuenta de que hay declaraciones y expresiones . Una expresión, a diferencia de una declaración, tiene un valor que se puede usar en alguna parte.

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

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 retorno se determina cuando se declara el método:

public static Type name(parameters)
{
  method body
}

Donde name es el nombre del método, parameters es la lista de parámetros del método y type es 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.

¿Está escribiendo su propio método y no quiere devolver nada al método de llamada? Simplemente declare el tipo del método como voidy el problema está resuelto. También hay muchos métodos como este en Java.


3. Devolver un resultado

Acabamos de descubrir cómo declarar un método que devuelve el resultado de un cálculo, pero ¿cómo obtenemos este resultado en el método mismo?

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

return value;

Donde returnes una declaración que finaliza el método inmediatamente. Y value es el valor que el método devuelve al método de llamada cuando sale. El tipo de valuedebe coincidir con el typeespecificado en la declaración del método.

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 resultcadena.

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)