"Rendben, próbáljunk meg egy másik megközelítést. Megmutatom, hogyan működnek a hívási módszerek, majd megpróbálod újra végigmenni az előző leckén, rendben?"

"Csináljuk."

"Remek. Mesélek a függvények/metódusok hívásáról és az általuk visszaadott értékekről (visszatérési értékek)."

"A parancsok, vagy utasítások metódusokba vannak csoportosítva, így egyetlen blokkként, akár egyetlen összetett parancsként is végrehajthatók. Ehhez meg kell írni a metódus (függvény) nevét, majd zárójelben listázni kell a metódus argumentumait."

Példa
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);
    }
}

print4"A fenti példában írtunk egy függvényt, amely az átadott karakterláncot négyszer fogja megjeleníteni a képernyőn. Ezután a 6. sorban meghívtuk a függvényt."

"Amikor a program eléri a 6. sort, a 9. sorra ugrik, és 'I like to move it, move it'az s változóhoz rendeli az értéket."

"Ezután a 11-14. sorok végrehajtásra kerülnek. A funkció befejeződik, és a program a 7. sorban folytatódik."

"Látom."

"Nemcsak argumentumokat (értékeket) adhat át egy függvénynek – a függvény visszaadhatja munkája eredményét (visszatérési értéket). Ez a return kulcsszóval történik. Így néz ki:"

1. példa
Határozza meg a két szám minimumát!
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;
   }
}
Így működik:
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);
   }
}

"Szerintem kezd értelmet nyerni! A bal és a jobb oszlopban lévő kód valójában ugyanaz. Csak a bal oldali kódnak van egy önálló funkciója."

"A függvény kiszámít egy bizonyos értéket, és a return utasítás segítségével adja át ezt az értéket annak, amit hívtak. Legalábbis én így látom."

– És igazad van!

– De mi ez az üresség típus?

"Néhány függvény egyszerűen végrehajt valamit anélkül, hogy kiszámítana vagy bármilyen értéket adna vissza, mint például a main() metódusunk. Az ilyen függvényekhez egy speciális visszatérési típus – void – készült."

"Miért nem deklarál semmit, ha egy függvény nem ad vissza semmit?"

"Ne feledje, hogyan deklarálunk bármilyen változót? Típus és név. Függvények esetén típust, nevet és zárójeleket deklarálunk. A függvény neve és a zárójelek után hívja meg a függvényt."

"Tehát könnyebb volt kitalálni egy "üres típust", mint a függvényeket két kategóriába osztani – azokra, amelyek értéket adnak vissza, és azokra, amelyek nem?"

"Pontosan! Nagyon okos vagy, fiam."

"Hogyan adjuk vissza az üres típust?"

"Mi nem. Ez így működik. A return utasítás végrehajtásakor a Java gép kiszámítja a "return" szó jobb oldalán lévő kifejezés értékét, eltárolja ezt az értéket a memória egy speciális részében, és azonnal leállítja a függvényt . A tárolt értéket ott használjuk, ahol a függvényt meghívtuk, a függvény meghívásának eredményeként. A korábban megadott példában láthatja."

"Arra a részre gondolsz, ahol int m = min(a, b) m = m2-re alakul át?"

"Igen. A függvény befejezése után minden úgy működik, mintha a függvény visszatérési értéke a helyére lett volna írva. Ismételje meg ezt a kifejezést gondolatban, és nézze meg a kódot az utolsó példában. "

"Szerintem ez csak könnyűnek tűnik. Valójában nehéz. Csak részeit értettem meg."

"Rendben van. Az első próbálkozásra csak olyan dolgokat érthetsz meg, amelyeket már tudsz. Minél több dolgot nem értesz, annál jobban belemerülsz valami újba, és annál jobbak lesznek az eredményeid. Idővel világosabb lesz ."

– Nos, ha azt mondod. Folytassuk.