Ett föreläsningsutdrag med en mentor som en del av Codegym University-kursen. Anmäl dig till hela kursen.


"Du igen, Amigo. Nåväl, hej."

"Det verkar som om du inte är särskilt glad över att se mig, Diego?"

"Jag har fått intrycket att du tror att du redan har lärt dig allt som finns att veta om metoder i Java."

"Åh, jag gör inte..."

"Jag tror inte det! Du vet inte ens hälften av det."

"Visst, jag håller inte med...

"Okej, nog med snack. Det är dags att börja. Och vi börjar med något enkelt. Till exempel det faktum att Java har en retursats . Den låter dig omedelbart avsluta en metod som den kallas i. Här är uttalandet:

return;

"Det är enkelt: det ensamma ordet returnföljt av ett semikolon. Så snart programmet kör detta uttalande avslutas den aktuella metoden och anropsmetoden fortsätter.

"Om returndet anropas i mainmetoden, kommer metoden mainomedelbart att avslutas, och med den 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 . valueDen fyller inte hela arrayen, bara den del som anges av indexen fromoch to.

"I början av fillmetoden 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)."

"Förstår det. Är det allt detta uttalande gör?"

"Egentligen returnär uttalandet mer användbart än du tror. Det är så användbart att det finns i nästan alla metoder i Java. Och nu ska jag leda dig till en förståelse för varför det är så.

Metoder med resultat,void

"Du kommer säkert ihåg att det finns uttalanden, och det finns uttryck . Vad är skillnaden mellan dem?"

"Om jag inte har fel så har ett uttryck, till skillnad från ett påstående, en betydelse som kan användas någonstans."

"Korrekt. Och i Java kan metoder också ha ett värde . Och detta är mycket goda nyheter: metoder kan inte bara göra något baserat på indataparametrarna, 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.

"Med andra ord, om jag skriver min metod och inte vill returnera något, då deklarerar jag vilken typ av metod som är , voidoch det är det?"

"Japp. Och jag måste också säga att Java har ganska många sådana metoder.

Returnerar ett resultat

"Jag kom på hur man deklarerar en metod som returnerar resultatet av en beräkning/arbete. Hur returnerar jag resultatet från själva metoden?"

"Det är en giltig fråga. returnUttalandet hjälper oss här igen. Att skicka ett resultat från en metod ser ut så här:

return value;

"Satsen returnkommer att avsluta metoden omedelbart. Och valuedet är vad metoden ska återgå till anropsmetoden när den avslutas. Typen av valuemåste matcha det Typespecificerade i metoddeklarationen. Här är några exempel för att förstärka det du har lärt dig:

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)

"Utmärkt. Metoder är min nya superkraft!"

"Bara om du övar tillräckligt på praktiska uppgifter. Om och om igen."