Een fragment uit een lezing met een mentor als onderdeel van de Codegym University-cursus. Schrijf je in voor de volledige cursus.


"Jij weer, Amigo. Wel, hallo."

'Het lijkt erop dat je niet erg blij bent me te zien, Diego?'

'Ik heb de indruk dat je denkt dat je alles al hebt geleerd over methoden in Java.'

"O, ik niet..."

'Ik denk het niet! Je weet nog niet eens de helft.'

"Zeker, ik vind het niet erg...

"Oké, genoeg gepraat. Het is tijd om te beginnen. En we beginnen met iets simpels. Bijvoorbeeld het feit dat Java een return statement heeft. Hiermee kun je een methode waarin het wordt aangeroepen direct beëindigen. Dit is het statement:

return;

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

"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 wordt doorgegeven met value. Het vult niet de hele array, alleen het deel dat wordt gespecificeerd door de indices fromen to.

"Aan het begin van de fillmethode worden de doorgegeven waarden gecontroleerd om er zeker van te zijn dat ze geldig zijn. Als deze fromkleiner is dan 0, of togroter is dan de lengte van de array, wordt de fillmethode onmiddellijk beëindigd (voert een returninstructie uit)."

"Begrepen. Is dat alles wat deze verklaring doet?"

"Eigenlijk returnis de verklaring nuttiger dan u denkt. Het is zo nuttig dat het in bijna elke methode op Java wordt aangetroffen. En nu zal ik u laten begrijpen waarom dit zo is.

Werkwijzen met resultaat,void

"Je herinnert je waarschijnlijk nog dat er verklaringen zijn en dat er uitdrukkingen zijn . Wat is het verschil daartussen?"

"Als ik me niet vergis, heeft een uitdrukking, in tegenstelling tot een uitspraak, een betekenis die ergens kan worden gebruikt."

"Klopt. En in Java kunnen methodes ook een waarde hebben . En dat is heel goed nieuws: methodes zijn niet alleen in staat om iets te doen op basis van de invoerparameters, maar bijvoorbeeld ook om iets te evalueren en het resultaat van de berekening .

"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 nameis de naam van de methode, parametersis de lijst met methodeparameters en typeis het type resultaat dat de methode retourneert.

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

"Met andere woorden, als ik mijn methode schrijf en niets wil retourneren, dan verklaar ik dat het type methode void, en dat is dat?"

"Ja. En ik moet ook zeggen dat Java nogal wat van dergelijke methodes heeft.

Een resultaat retourneren

"Ik heb ontdekt hoe ik een methode moet declareren die het resultaat van een berekening/werk retourneert. Hoe retourneer ik het resultaat van de methode zelf?"

"Dat is een geldige vraag. De returnverklaring helpt ons hier weer eens. Het doorgeven van een resultaat van een methode ziet er als volgt uit:

return value;

"De returninstructie beëindigt de methode onmiddellijk. En valueis wat de methode zou moeten terugkeren naar de aanroepende methode wanneer deze wordt afgesloten. Het type valuemoet overeenkomen met het Typeopgegeven in de methodedeclaratie. Hier zijn enkele voorbeelden om te versterken wat u hebt geleerd:

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 toegevoegd aan de string 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)

"Uitstekend. Methoden zijn mijn nieuwe superkracht!"

"Alleen als je genoeg oefent in hands-on taken. Over en uit."