"Oké, laten we een andere aanpak proberen. Ik zal je laten zien hoe aanroepmethoden werken, en dan probeer je de vorige les opnieuw te doorlopen, oké?"

"Laten we het doen."

"Geweldig. Ik zal je vertellen over het aanroepen van functies/methoden en de waarden die ze retourneren (retourwaarden)."

"Opdrachten of instructies zijn gegroepeerd in methoden, zodat ze kunnen worden uitgevoerd als een enkel blok, zoals een enkele complexe opdracht. Om dit te doen, moet u de naam van de methode (functie) schrijven en vervolgens de argumenten van de methode tussen haakjes vermelden."

Voorbeeld
package com.codegym.lesson2;
public class MethodCall
{
    public static void main(String[] args)
    {
         print4("I like to move it, move it.");
    }

    public static void print4(String s)
    {
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
    }
}

"In het bovenstaande voorbeeld hebben we een functie geschreven die de doorgegeven string vier keer op het scherm zal weergeven. Vervolgens hebben we de print4functie in regel 6 aangeroepen."

"Wanneer het programma regel 6 bereikt, springt het naar regel 9 en wijst de waarde toe 'I like to move it, move it'aan de variabele s."

"Vervolgens worden regels 11-14 uitgevoerd. De functie wordt beëindigd en het programma wordt hervat op regel 7."

"Ik zie."

"Je kunt niet alleen argumenten (waarden) doorgeven aan een functie - een functie kan het resultaat van zijn werk retourneren (retourwaarde). Dit doe je met het sleutelwoord return. Zo ziet het eruit:"

Voorbeeld 1.
Bepaal het minimum van twee getallen.
public class MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int m = min(a, b);
      System.out.println("The minimum is "+ m);
   }

   public static int min(int c, int d)
   {
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      return m2;
   }
}
Dit is hoe het werkt:
public class MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int c = a, d = b;
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      int m = m2;
      System.out.println("The minimum is "+ m);
   }
}

"Ik denk dat het logisch begint te worden! De code in de linker- en rechterkolom is eigenlijk hetzelfde. Alleen heeft de code aan de linkerkant een zelfstandige functie."

"De functie berekent een bepaalde waarde en gebruikt de return-opdracht om die waarde door te geven aan de naam van de functie. Tenminste, zo zie ik het."

"En je hebt gelijk!"

"Maar wat is dit lege type?"

"Sommige functies doen gewoon iets zonder enige waarde te berekenen of terug te geven, zoals onze main() methode. Voor dergelijke functies is een speciaal retourtype - void - gemaakt."

"Waarom declareert u niet gewoon niets als een functie niets retourneert?"

"Weet je nog hoe we een variabele declareren? Type en naam. Voor functies declareren we een type, naam en haakjes. Een functienaam gevolgd door haakjes is hoe je de functie aanroept."

"Dus het was gemakkelijker om een ​​'leegtetype' uit te vinden dan om functies in twee categorieën te verdelen: degenen die waarden retourneren en degenen die dat niet doen?"

'Precies! Je bent echt slim, mijn jongen.'

"Hoe retourneren we een leegtetype?"

"Dat doen we niet. Het werkt als volgt. Bij het uitvoeren van de return-opdracht berekent de Java-machine de waarde van de expressie rechts van het woord 'return', slaat deze waarde op in een speciaal deel van het geheugen en stopt onmiddellijk de functie . De opgeslagen waarde wordt gebruikt waar de functie werd aangeroepen, als resultaat van het aanroepen van de functie. Je kunt het zien in het voorbeeld dat ik eerder gaf."

"Je bedoelt het deel waar int m = min(a, b) wordt getransformeerd in m = m2?"

"Ja. Nadat de functie is voltooid, werkt alles alsof de retourwaarde van de functie op zijn plaats is geschreven. Herhaal deze zin in gedachten en kijk naar de code in het laatste voorbeeld. "

"Ik denk dat dit alleen maar makkelijk lijkt. Het is eigenlijk moeilijk. Ik heb er maar delen van begrepen."

"Dat is OK. Bij de eerste poging kun je alleen dingen begrijpen die je al weet. Hoe meer dingen je niet begrijpt, hoe dieper je in iets nieuws duikt en hoe beter je resultaten zullen zijn. Na verloop van tijd zal het duidelijker worden. ."

'Nou, als jij het zegt. Laten we doorgaan.'