1. returnUtlåtandet

Tror du att du redan har lärt dig allt om Java-metoder? Vad du än tror att du vet, vet du fortfarande inte hälften av det.

Låt oss börja med något enkelt. Till exempel har Java en retursats som låter dig omedelbart avsluta metoden som anropar den. Här är uttalandet:

return;

Det är enkelt: det ensamma ordet returnföljt av ett semikolon. Så snart programmet kör denna sats avslutas den aktuella metoden omedelbart och anropet fortsätter.

Om returnanropas i mainmetoden, mainkommer metoden omedelbart att avslutas, och med det hela programmet.

Exempel:

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 godkända arrayen med value.
Den del av arrayen som ska fyllas definieras av indexen from och to.
Om from är mindre än 0eller om to är större än längden på arrayen, avslutas metoden omedelbart.

Ovanstående program har en fillmetod som fyller den array som skickas till den med value. Den fyller inte hela arrayen, bara den del som anges av indexen fromoch to.

I början av fill metoden kontrolleras de godkända värdena för att säkerställa att de är giltiga. Om fromär mindre än 0, eller om to är större än längden på arrayen, fillavslutas metoden omedelbart (kör en returnsats).

Detta returnuttalande är användbart: praktiskt taget alla metoder i Java har en, och här är varför.



2. Metoder med resultat,void

Kom ihåg att vi en gång kom på att det finns påståenden och det finns uttryck . Ett uttryck, till skillnad från ett påstående, har ett värde som kan användas någonstans.

Och i Java kan metoder ha ett värde . Och detta är mycket goda nyheter: metoder kan inte bara göra något baserat på ingångsparametrarna, utan också till exempel att utvärdera något och returnera resultatet av beräkningen .

Förresten, du har redan stött på sådana metoder:

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

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

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

Metoden copyOf()returnerar enint[]

Varje metod kan bara returnera ett värde av en förutbestämd typ. Returtypen bestäms när metoden deklareras:

public static Type name(parameters)
{
  method body
}

Var name är namnet på metoden, parameters är listan över metodparametrar och type är typen av resultat som metoden returnerar.

För metoder som inte returnerar något finns en speciell platshållartyp: void.

Skriver du din egen metod och vill inte returnera något till anropsmetoden? Deklarera bara metodens typ som void, så är problemet löst. Det finns också många sådana här metoder i Java.


3. Returnera ett resultat

Vi har precis kommit på hur man deklarerar en metod som returnerar resultatet av en beräkning, men hur ger vi resultatet i själva metoden?

Uttalandet returnhjälper oss här igen. Att skicka ett resultat från en metod ser ut så här:

return value;

Var returnär ett uttalande som avslutar metoden omedelbart. Och value är det värde som metoden returnerar till anropsmetoden när den avslutas. Typen av valuemåste matcha det typesom anges i metoddeklarationen.

Exempel 1. Metoden beräknar minimum av två tal:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Metoden returnerar minst två siffror.

Om a < b
retur a
Annars
returnerab

Exempel 2. Metoden duplicerar strängen som skickas till den ngånger:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
Metoden tar två parametrar - en sträng och antalet gånger som strängen ska upprepas.
En tom sträng skapas för det framtida resultatet.

I en slinga med iterationer läggs timesett mellanslag och strängen till strängen. Strängen returneras som resultatet av metoden. strresult

result

Exempel 3: Metoden beräknar maximalt två tal med den ternära operatorn:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Metoden returnerar maximalt två tal.

returnera (om a > b, då a, annars b)