1. returnUttalelsen

Tror du at du allerede har lært alt om Java-metoder? Uansett hva du tror du vet, vet du fortsatt ikke halvparten av det.

La oss starte med noe enkelt. For eksempel har Java en retursetning som lar deg øyeblikkelig avslutte metoden som kaller den. Her er uttalelsen:

return;

Det er enkelt: det ensomme ordet returnetterfulgt av et semikolon. Så snart programmet kjører denne setningen, avsluttes den gjeldende metoden umiddelbart, og anropet fortsetter.

Hvis returndet kalles i mainmetoden, mainvil metoden umiddelbart avsluttes, og med det hele programmet.

Eksempel:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {


     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)
   {
     int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};
     fill(months, 2, 10, 8);
   }
}


Metoden fill fyller en del av den beståtte matrisen med value.
Den delen av matrisen som skal fylles er definert av indeksene from og to.
Hvis from er mindre enn 0eller hvis to er større enn lengden på matrisen, avsluttes metoden umiddelbart.

Programmet ovenfor har en fillmetode som fyller arrayet som sendes til det med value. Den fyller ikke hele matrisen, bare delen spesifisert av indeksene fromog to.

I begynnelsen av metoden fill kontrolleres de beståtte verdiene for å sikre at de er gyldige. Hvis fromer mindre enn 0, eller hvis to er større enn lengden på matrisen, fillavsluttes metoden umiddelbart (utfører en returnsetning).

Denne returnuttalelsen er nyttig: praktisk talt alle metoder i Java har en, og her er hvorfor.



2. Metoder med resultat,void

Husk at vi en gang fant ut at det er utsagn, og det er uttrykk . Et uttrykk, i motsetning til et utsagn, har en verdi som kan brukes et sted.

Og i Java kan metoder ha en verdi . Og dette er veldig gode nyheter: metoder er ikke bare i stand til å gjøre noe basert på inngangsparametrene, men også for eksempel å evaluere noe og returnere resultatet av beregningen .

Forresten, du har allerede møtt slike metoder:

double delta = Math.abs(d1 - d2);
Metoden abs()returnerer en dobbel
Scanner console = new Scanner(System.in);
int x = console.nextInt();

Metoden nextInt()returnerer enint
String str = "Hello";
String s2 = str.toUpperCase();

Metoden toUpperCase()returnerer enString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

Metoden copyOf()returnerer enint[]

Hver metode kan bare returnere én verdi av én forhåndsbestemt type. Returtypen bestemmes når metoden er deklarert:

public static Type name(parameters)
{
  method body
}

Hvor name er navnet på metoden, parameters er listen over metodeparametere, og type er typen resultat som metoden returnerer.

For metoder som ikke returnerer noe, er det en spesiell plassholdertype: void.

Skriver du din egen metode og vil ikke returnere noe til ringemetoden? Bare erklær metodens type som void, og problemet er løst. Det er også mange metoder som dette i Java.


3. Returnere et resultat

Vi har nettopp funnet ut hvordan vi kan deklarere en metode som returnerer resultatet av en beregning, men hvordan resulterer vi dette resultatet i selve metoden?

Uttalelsen returnhjelper oss her igjen. Å sende et resultat fra en metode ser slik ut:

return value;

Hvor returner en uttalelse som avslutter metoden umiddelbart. Og value er verdien som metoden returnerer til kallemetoden når den avsluttes. Typen av valuemå samsvare med det typespesifiserte i metodedeklarasjonen.

Eksempel 1. Metoden beregner minimum av to tall:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Metoden returnerer minimum to tall.

Hvis a < b
retur a
Ellers
returb

Eksempel 2. Metoden dupliserer strengen som sendes til den nganger:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
Metoden tar to parametere - en streng og antall ganger strengen skal gjentas.
En tom streng opprettes for det fremtidige resultatet.

I en løkke med iterasjoner legges timeset mellomrom og strengen til strengen. Strengen returneres som et resultat av metoden. strresult

result

Eksempel 3: Metoden beregner maksimalt to tall ved å bruke den ternære operatoren:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Metoden returnerer maksimalt to tall.

returnere (hvis a > b, da a, ellers b)