1. returnAfirmația

Crezi că ai învățat deja totul despre metodele Java? Orice crezi că știi, încă nu știi jumătate.

Să începem cu ceva simplu. De exemplu, Java are o instrucțiune return care vă permite să opriți instantaneu metoda care o apelează. Iată declarația:

return;

Este simplu: cuvântul solitar returnurmat de punct și virgulă. De îndată ce programul execută această instrucțiune, metoda curentă iese imediat și apelarea continuă.

Dacă returneste apelat în mainmetodă, atunci mainmetoda se va încheia imediat și, odată cu ea, întregul program.

Exemplu:

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


Metoda fill umple o parte din tabloul transmis cu value.
Partea matricei care trebuie completată este definită de indici from și to.
Dacă from este mai mică decât 0sau dacă to este mai mare decât lungimea matricei, atunci metoda se termină imediat.

Programul de mai sus are o fillmetodă care umple matricea transmisă cu value. Nu umple întregul tablou, ci doar partea specificată de indici fromși to.

La începutul metodei fill , valorile transmise sunt verificate pentru a se asigura că sunt valide. Dacă fromeste mai mică decât 0 sau dacă to este mai mare decât lungimea matricei, atunci fillmetoda se termină imediat (execută o returninstrucțiune).

Această returnafirmație este utilă: practic fiecare metodă din Java are una și iată de ce.



2. Metode cu rezultat,void

Amintiți-vă că odată ne-am dat seama că există afirmații și există expresii . O expresie, spre deosebire de o afirmație, are o valoare care poate fi folosită undeva.

Și, în Java, metodele pot avea o valoare . Și aceasta este o veste foarte bună: metodele nu numai că pot face ceva pe baza parametrilor de intrare, ci și, de exemplu, să evalueze ceva și să returneze rezultatul calculului .

Apropo, ați întâlnit deja astfel de metode:

double delta = Math.abs(d1 - d2);
Metoda abs()returnează un dublu
Scanner console = new Scanner(System.in);
int x = console.nextInt();

Metoda nextInt()returnează unint
String str = "Hello";
String s2 = str.toUpperCase();

Metoda toUpperCase()returnează aString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

Metoda copyOf()returnează unint[]

Fiecare metodă poate returna doar o valoare de un tip predeterminat. Tipul de returnare este determinat atunci când metoda este declarată:

public static Type name(parameters)
{
  method body
}

Unde name este numele metodei, parameters este lista de parametri ai metodei și type este tipul rezultatului pe care îl returnează metoda.

Pentru metodele care nu returnează nimic, există un tip special de substituent: void.

Îți scrii propria metodă și nu vrei să returnezi nimic la metoda de apelare? Doar declarați tipul metodei ca voidși problema este rezolvată. Există, de asemenea, o mulțime de metode ca aceasta în Java.


3. Returnarea unui rezultat

Tocmai ne-am dat seama cum să declarăm o metodă care returnează rezultatul unui calcul, dar cum rezultăm acest rezultat în metoda în sine?

Declarația returnne ajută încă o dată aici. Transmiterea unui rezultat dintr-o metodă arată astfel:

return value;

Unde returneste o declarație care încheie metoda imediat. Și value este valoarea pe care metoda o returnează metodei de apelare când iese. Tipul valuetrebuie să se potrivească cu cel typespecificat în declarația metodei.

Exemplul 1. Metoda calculează minimum două numere:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Metoda returnează minimum două numere.

Dacă a < b
se întoarce a
În caz contrar,
se întoarceb

Exemplul 2. Metoda dublează șirul transmis de nori:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
Metoda ia doi parametri - un șir și numărul de ori în care șirul trebuie repetat.
Este creat un șir gol pentru rezultatul viitor.

Într-o buclă cu timesiterații, un spațiu și strșirul este adăugat la resultșir.

Șirul resulteste returnat ca rezultat al metodei.

Exemplul 3: Metoda calculează maximum două numere folosind operatorul ternar:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Metoda returnează maximum două numere.

returnează (dacă a > b, atunci a, altfel b)