"OK, la oss prøve en annen tilnærming. Jeg skal vise deg hvordan ringemetoder fungerer, og så prøver du å gå gjennom forrige leksjon igjen, OK?"

"La oss gjøre det."

"Flott. Jeg skal fortelle deg om kallefunksjoner/-metoder og verdiene de returnerer (returverdier)."

"Kommandoer, eller setninger, er gruppert i metoder slik at de kan utføres som en enkelt blokk, som en enkelt kompleks kommando. For å gjøre dette, må du skrive metoden (funksjon) navn og deretter liste metodens argumenter innenfor 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 funksjon som vil vise den beståtte strengen på skjermen fire ganger. Så kalte vi funksjonen print4på linje 6."

"Når programmet når linje 6, vil det hoppe til linje 9, og tilordne verdien 'I like to move it, move it'til variabelen s."

"Deretter vil linjene 11-14 bli utført. Funksjonen avsluttes, og programmet vil fortsette på linje 7."

"Jeg skjønner."

"Ikke bare kan du sende argumenter (verdier) til en funksjon – en funksjon kan returnere resultatet av arbeidet sitt (returverdi). Dette gjøres med nøkkelordet retur. Slik ser det ut:"

Eksempel 1.
Bestem minimum av to tall.
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;
   }
}
Slik 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 begynner å gi mening! Koden i venstre og høyre kolonne er faktisk den samme. Det er bare det at koden til venstre har en frittstående funksjon."

"Funksjonen beregner en viss verdi og bruker retursetningen til å sende den verdien til det som kalles den. I det minste er det slik jeg ser det."

"Og du har rett!"

"Men hva er denne tomromstypen?"

"Noen funksjoner gjør bare noe uten å beregne eller returnere noen verdi, som vår main()- metode. En spesiell returtype – void – ble opprettet for slike funksjoner."

"Hvorfor ikke bare erklære ingenting hvis en funksjon ikke returnerer noe?"

"Husker du hvordan vi deklarerer en hvilken som helst variabel? Type og navn. For funksjoner erklærer vi en type, navn og parenteser. Et funksjonsnavn etterfulgt av parenteser er hvordan du kaller funksjonen."

"Så, det var lettere å finne opp en 'tomtype' enn å dele funksjoner i to kategorier - de som returnerer verdier og de som ikke gjør det?"

"Akkurat! Du er veldig smart, gutten min."

"Hvordan returnerer vi en tomromstype?"

"Det gjør vi ikke. Det fungerer slik. Når du kjører return-setningen, beregner Java-maskinen verdien av uttrykket til høyre for ordet 'retur', lagrer denne verdien i en spesiell del av minnet og avslutter umiddelbart . funksjonen . Den lagrede verdien brukes der funksjonen ble kalt, som et resultat av å kalle funksjonen. Du kan se det i eksemplet jeg ga tidligere."

"Du mener delen der int m = min(a, b) er transformert til m = m2?"

"Ja. Etter at funksjonen er ferdig, fungerer alt som om funksjonens returverdi ble skrevet på plass. Gjenta denne setningen i tankene dine og se på koden i det siste eksemplet. "

"Jeg synes dette bare virker enkelt. Det er faktisk vanskelig. Jeg har bare forstått deler av det."

"Det er OK. På første forsøk kan du bare forstå ting du allerede vet. Jo flere ting du ikke forstår, jo dypere stuper du inn i noe nytt, og jo bedre blir resultatene dine. Det vil bli klarere med tiden ."

"Vel, hvis du sier det. La oss fortsette."