"OK, lad os prøve en anden tilgang. Jeg vil vise dig, hvordan opkaldsmetoder fungerer, og så prøver du at gennemgå den forrige lektion igen, okay?"

"Lad os gøre det."

"Fantastisk. Jeg vil fortælle dig om at kalde funktioner/metoder og de værdier, de returnerer (returværdier)."

"Kommandoer eller sætninger er grupperet i metoder, så de kan udføres som en enkelt blok, som en enkelt kompleks kommando. For at gøre dette skal du skrive metoden (funktions) navn og derefter liste metodens argumenter inden for parentes."

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

"I eksemplet ovenfor skrev vi en funktion, der vil vise den beståede streng på skærmen fire gange. Så kaldte vi funktionen print4i linje 6."

"Når programmet når linje 6, springer det til linje 9 og tildeler værdien 'I like to move it, move it'til variablen s."

"Så vil linje 11-14 blive udført. Funktionen afsluttes, og programmet genoptages på linje 7."

"Jeg ser."

"Ikke kun kan du sende argumenter (værdier) til en funktion – en funktion kan returnere resultatet af sit arbejde (returværdi). Dette gøres med nøgleordet return. Sådan ser det ud:"

Eksempel 1.
Bestem minimum af to tal.
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;
   }
}
Sådan fungerer det:
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);
   }
}

"Jeg synes, det begynder at give mening! Koden i venstre og højre kolonne er faktisk den samme. Det er bare, at koden til venstre har en selvstændig funktion."

"Funktionen beregner en bestemt værdi og bruger return-sætningen til at videregive den værdi til, hvad den kaldes. Det er i hvert fald sådan, jeg ser det."

"Og du har ret!"

"Men hvad er denne tomhedstype?"

"Nogle funktioner gør bare noget uden at beregne eller returnere nogen værdi, f.eks. vores main()- metode. En speciel returtype – void – blev oprettet for sådanne funktioner."

"Hvorfor ikke bare erklære ingenting, hvis en funktion ikke returnerer noget?"

"Husk, hvordan vi erklærer en variabel? Type og navn. For funktioner erklærer vi en type, navn og parenteser. Et funktionsnavn efterfulgt af parentes er, hvordan du kalder funktionen."

"Så det var nemmere at opfinde en 'tomtype' end at opdele funktioner i to kategorier - dem, der returnerer værdier, og dem, der ikke gør?"

"Nøjagtig! Du er virkelig klog, min dreng."

"Hvordan returnerer vi en tomhedstype?"

"Det gør vi ikke. Det fungerer sådan her. Når du udfører return-sætningen, beregner Java-maskinen værdien af ​​udtrykket til højre for ordet 'retur', gemmer denne værdi i en særlig del af hukommelsen og afslutter med det samme . funktionen . Den lagrede værdi bruges, hvor funktionen blev kaldt, som et resultat af at kalde funktionen. Du kan se det i det eksempel, jeg gav tidligere."

"Du mener den del, hvor int m = min(a, b) omdannes til m = m2?"

"Ja. Efter funktionen er færdig, fungerer alt, som om funktionens returværdi blev skrevet på dens plads. Gentag denne sætning i dit sind og se på koden i det sidste eksempel. "

"Jeg synes, det kun virker nemt. Det er faktisk svært. Jeg har kun forstået dele af det."

"Det er OK. I første forsøg kan du kun forstå ting, du allerede ved. Jo flere ting, du ikke forstår, jo dybere kaster du dig ud i noget nyt, og jo bedre bliver dine resultater. Det vil blive tydeligere med tiden ."

"Nå, hvis du siger det. Lad os fortsætte."