"OK, haideți să încercăm o altă abordare. Vă voi arăta cum funcționează metodele de apelare, apoi încercați să treceți din nou prin lecția anterioară, OK?"

"Hai să o facem."

„Genial. Vă voi spune despre apelarea funcțiilor/metodelor și despre valorile pe care le returnează (valori returnate).”

"Comenzile sau instrucțiunile sunt grupate în metode, astfel încât să poată fi executate ca un singur bloc, ca o singură comandă complexă. Pentru a face acest lucru, trebuie să scrieți numele metodei (funcției) și apoi să enumerați argumentele metodei în paranteze."

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

"În exemplul de mai sus, am scris o funcție care va afișa șirul transmis pe ecran de patru ori. Apoi am numit funcția print4în linia 6."

„Când programul ajunge la linia 6, va sări la linia 9, atribuind valoarea 'I like to move it, move it'variabilei s”.

"Atunci vor fi executate liniile 11-14. Funcția se va termina, iar programul se va relua pe linia 7."

"Înțeleg."

„Nu numai că puteți transmite argumente (valori) unei funcții, ci o funcție poate returna rezultatul muncii sale (valoare de returnare). Acest lucru se face cu cuvântul cheie return. Iată cum arată:”

Exemplul 1.
Determinați minimul a două numere.
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;
   }
}
Iată cum funcționează:
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);
   }
}

"Cred că începe să aibă sens! Codul din coloanele din stânga și din dreapta este de fapt același. Doar că codul din stânga are o funcție de sine stătătoare."

"Funcția calculează o anumită valoare și folosește instrucțiunea return pentru a transmite acea valoare oricui o numește. Cel puțin, așa văd eu."

— Și ai dreptate!

— Dar ce este acest tip de gol?

„Unele funcții fac doar ceva fără să calculeze sau să returneze vreo valoare, cum ar fi metoda noastră main() . Un tip de returnare special – void – a fost creat pentru astfel de funcții.”

„De ce nu declara nimic dacă o funcție nu returnează nimic?”

"Îți amintești cum declarăm orice variabilă? Tip și nume. Pentru funcții, declarăm un tip, un nume și paranteze. Un nume de funcție urmat de paranteze este modul în care apelezi funcția."

„Așadar, a fost mai ușor să inventezi un „tip gol” decât să împarți funcțiile în două categorii – cele care returnează valori și cele care nu?”

"Exact! Ești foarte deștept, băiete."

„Cum returnăm un tip de gol?”

„Noi nu. Funcționează așa. Când execută instrucțiunea return, mașina Java calculează valoarea expresiei din dreapta cuvântului „retur”, stochează această valoare într-o parte specială a memoriei și se termină imediat . funcția . Valoarea stocată este folosită acolo unde a fost apelată funcția, ca rezultat al apelării funcției. O puteți vedea în exemplul pe care l-am dat mai devreme."

"Vrei să spui partea în care int m = min(a, b) se transformă în m = m2?"

"Da. După ce funcția este terminată, totul funcționează ca și cum valoarea de returnare a funcției ar fi fost scrisă în locul ei. Repetați această frază în minte și uitați-vă la codul din ultimul exemplu. "

"Cred că asta pare doar ușor. De fapt, este dificil. Am înțeles doar părți din asta."

„Este în regulă. La prima încercare, poți înțelege doar lucruri pe care le știi deja. Cu cât nu înțelegi mai multe lucruri, cu atât te afundi mai adânc în ceva nou și cu atât rezultatele tale vor fi mai bune. Va deveni mai clar cu timpul. ."

— Ei bine, dacă spui asta. Hai să continuăm.