1. De returnverklaring

Denk je dat je al alles hebt geleerd over Java-methoden? Wat je ook denkt te weten, je weet nog niet de helft ervan.

Laten we beginnen met iets simpels. Java heeft bijvoorbeeld een return statement waarmee je de methode die het aanroept direct kunt beëindigen. Hier is de verklaring:

return;

Het is simpel: het eenzame woord returngevolgd door een puntkomma. Zodra het programma deze instructie uitvoert, wordt de huidige methode onmiddellijk afgesloten en gaat het aanroepen door.

Als returnde methode wordt aangeroepen main, wordt de mainmethode onmiddellijk beëindigd, en daarmee het hele programma.

Voorbeeld:

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);
   }
}


De fill methode vult een deel van de doorgegeven array met value.
Het te vullen deel van de array wordt bepaald door de indices from en to.
Als from kleiner is dan 0of to groter is dan de lengte van de array, wordt de methode onmiddellijk beëindigd.

Het bovenstaande programma heeft een fillmethode die de array vult die eraan is doorgegeven met value. Het vult niet de hele array, alleen het deel gespecificeerd door de indices fromen to.

Aan het begin van de fill methode worden de doorgegeven waarden gecontroleerd om er zeker van te zijn dat ze geldig zijn. Als fromkleiner is dan 0, of to groter is dan de lengte van de array, dan fillstopt de methode onmiddellijk (voert een returninstructie uit).

Deze returnverklaring is nuttig: praktisch elke methode in Java heeft er een, en dit is waarom.



2. Methoden met resultaat,void

Onthoud dat we er ooit achter kwamen dat er verklaringen zijn en dat er uitdrukkingen zijn . Een expressie heeft, in tegenstelling tot een statement, een waarde die ergens kan worden gebruikt.

En in Java kunnen methoden de waarde . En dit is heel goed nieuws: methoden kunnen niet alleen iets doen op basis van de invoerparameters, maar bijvoorbeeld ook iets evalueren en het resultaat van de berekening teruggeven .

Trouwens, je bent al dergelijke methoden tegengekomen:

double delta = Math.abs(d1 - d2);
De abs()methode retourneert een double
Scanner console = new Scanner(System.in);
int x = console.nextInt();

De nextInt()methode retourneert eenint
String str = "Hello";
String s2 = str.toUpperCase();

De toUpperCase()methode retourneert aString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

De copyOf()methode retourneert eenint[]

Elke methode kan slechts één waarde van één vooraf bepaald type retourneren. Het retourtype wordt bepaald wanneer de methode wordt gedeclareerd:

public static Type name(parameters)
{
  method body
}

Waar name is de naam van de methode, parameters is de lijst met methodeparameters en type is het type resultaat dat de methode retourneert.

Voor methoden die niets teruggeven, is er een speciaal type placeholder: void.

Schrijft u uw eigen methode en wilt u niets teruggeven aan de aanroepende methode? Verklaar gewoon het type van de methode als void, en het probleem is opgelost. Er zijn ook veel van dit soort methoden in Java.


3. Een resultaat retourneren

We hebben net ontdekt hoe we een methode kunnen declareren die het resultaat van een berekening retourneert, maar hoe kunnen we dit resultaat in de methode zelf berekenen?

De returnverklaring helpt ons hier opnieuw. Het doorgeven van een resultaat van een methode ziet er als volgt uit:

return value;

Waar returnis een instructie die de methode onmiddellijk beëindigt. En value is de waarde die de methode retourneert naar de aanroepende methode wanneer deze wordt afgesloten. Het type valuemoet overeenkomen met het typeopgegeven type in de methodedeclaratie.

Voorbeeld 1. De methode berekent het minimum van twee getallen:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
De methode retourneert het minimum van twee getallen.

Indien a < b
retour a
Anders
retourb

Voorbeeld 2. De methode dupliceert de string die eraan is doorgegeven nkeer:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
De methode heeft twee parameters nodig: een tekenreeks en het aantal keren dat de tekenreeks moet worden herhaald.
Er wordt een lege string gemaakt voor het toekomstige resultaat.

In een lus met timesiteraties strwordt een spatie en de string aan de string toegevoegd result.

De string resultwordt geretourneerd als het resultaat van de methode.

Voorbeeld 3: De methode berekent het maximum van twee getallen met behulp van de ternaire operator:

int max(int a, int b)
{
   return (a > b ? a : b);
}
De methode retourneert het maximum van twee getallen.

retourneren (als a > b, dan a, anders b)