Fragment wykładu z mentorem w ramach kursu Codegym University. Zapisz się na pełny kurs.


- Znowu ty, Amigo. Cóż, cześć.

- Wygląda na to, że nie cieszysz się, że mnie widzisz, Diego?

„Odniosłem wrażenie, że myślisz, że nauczyłeś się już wszystkiego o metodach w Javie”.

"Och, ja nie..."

- Nie sądzę! Nie znasz nawet połowy.

"Jasne, nie potępiam...

„Dobra, dość gadania. Czas zacząć. Zaczniemy od czegoś prostego. Na przykład od tego, że Java posiada instrukcję return . Pozwala ona na natychmiastowe zakończenie metody, w której została wywołana. Oto instrukcja:

return;

„To proste: samotne słowo, returnpo którym następuje średnik. Gdy tylko program wykona tę instrukcję, bieżąca metoda kończy działanie, a metoda wywołująca jest kontynuowana.

„Jeśli returnw metodzie zostanie wywołane main, metoda mainnatychmiast się zakończy, a wraz z nią cały program.

Przykład:

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 wypełnia część przekazanej tablicy wartością value.

Część tablicy do wypełnienia jest określona przez indeksy from i to.

Jeśli from jest mniejsza 0lub to  większa niż długość tablicy, metoda kończy się natychmiast.

„Powyższy program ma fillmetodę, która wypełnia przekazaną do niego tablicę value. Nie wypełnia całej tablicy, tylko część określoną przez indeksy fromi to.

„Na początku metody fillsprawdzane są przekazane wartości, aby upewnić się, że są prawidłowe. Jeśli fromjest mniejsza niż 0 lub towiększa niż długość tablicy, metoda fillnatychmiast się kończy (wykonuje returninstrukcję).”

„Rozumiem. Czy to wszystko, co robi to stwierdzenie?”

„Właściwie to returnstwierdzenie jest bardziej przydatne niż myślisz. Jest tak przydatne, że można je znaleźć w prawie każdej metodzie w Javie. A teraz poprowadzę cię do zrozumienia, dlaczego tak jest.

Metody z wynikiem,void

„Pewnie pamiętasz, że są zdania i są wyrażenia . Jaka jest między nimi różnica?”

„Jeśli się nie mylę, wyrażenie, w przeciwieństwie do stwierdzenia, ma znaczenie, które można gdzieś wykorzystać”.

„Zgadza się. A w Javie metody też mogą mieć wartość . I to jest bardzo dobra wiadomość: metody są w stanie nie tylko zrobić coś na podstawie parametrów wejściowych, ale też np. coś ocenić i zwrócić wynik obliczenie .

„Nawiasem mówiąc, spotkałeś się już z takimi metodami:

double delta = Math.abs(d1 - d2);
Metoda abs()zwraca podwójne
Scanner console = new Scanner(System.in);
int x = console.nextInt();

Metoda nextInt()zwracaint
String str = "Hello";
String s2 = str.toUpperCase();
Metoda toUpperCase()zwraca aString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

Metoda copyOf()zwracaint[]

„Każda metoda może zwrócić tylko jedną wartość jednego z góry określonego typu . Zwracany typ jest określany, gdy metoda jest deklarowana:

public static Type name(parameters)
{
  method body
}

Gdzie nameto nazwa metody, parametersto lista parametrów metody i typetyp wyniku zwracanego przez metodę.

W przypadku metod, które nic nie zwracają, istnieje specjalny typ symbolu zastępczego: void.

„Innymi słowy, jeśli napiszę swoją metodę i nie chcę niczego zwracać, to deklaruję typ metody jako void, i to wszystko?”

„Tak. I muszę też powiedzieć, że Java ma całkiem sporo takich metod.

Zwracanie wyniku

„Zrozumiałem, jak zadeklarować metodę, która zwraca wynik obliczenia/pracy. Jak zwrócić wynik z samej metody?”

„To ważne pytanie. To returnstwierdzenie pomaga nam tutaj ponownie. Przekazywanie wyniku z metody wygląda następująco:

return value;

returnInstrukcja natychmiast zakończy działanie metody. I valueto jest to, co metoda powinna zwrócić do metody wywołującej po zakończeniu. Typ valuemusi być zgodny z Typeokreślonym w deklaracji metody. Oto kilka przykładów potwierdzających to, czego się nauczyłeś:

Przykład 1. Metoda oblicza minimum z dwóch liczb:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Metoda zwraca minimum dwie liczby.

Jeśli a < b
powrót a
W przeciwnym razie
powrótb

Przykład 2. Metoda duplikuje przekazany do niej łańcuch nrazy:

String multiple(String str, int times)
{
   String result = "";

   for (int i = 0; i < times; i++);
     result = result + " "+ str;
   return result;
}
Metoda przyjmuje dwa parametry — łańcuch i liczbę powtórzeń ciągu.
Dla przyszłego wyniku tworzony jest pusty łańcuch.

W pętli z timesiteracjami do łańcucha dodawana jest spacja i łańcuch strznaków result.
Ciąg resultjest zwracany jako wynik metody.

Przykład 3: Metoda oblicza maksymalnie dwie liczby za pomocą operatora trójskładnikowego:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Metoda zwraca maksymalnie dwie liczby.

powrót (jeśli a > b, to a, inaczej b)

„Wspaniale. Metody to moja nowa supermoc!”

„Tylko jeśli ćwiczysz wystarczająco dużo w zadaniach praktycznych. W kółko”.