Фрагмент от лекция с ментор като част от курса на Codegym University. Запишете се за пълния курс.


"Отново ти, Амиго. Е, здравей."

— Изглежда не си много щастлив да ме видиш, Диего?

„Останах с впечатлението, че мислите, че вече сте научor всичко, което трябва да знаете за методите в Java.“

"О, аз не..."

"Не мисля така! Ти дори не знаеш и половината от това."

„Разбира се, не огорчавам...

„Добре, достатъчно приказки. Време е да започнем. И ще започнем с нещо просто. Например фактът, че Java има оператор за връщане . Той ви позволява незабавно да прекратите метод, в който е извикан. Ето израза:

return;

„Просто е: самотната дума, returnпоследвана от точка и запетая. Веднага щом програмата изпълни този оператор, текущият метод излиза и извикващият метод продължава.

„Ако returnбъде извикан в mainметода, тогава mainметодът незабавно ще приключи, а с него и цялата програма.

Пример:

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);
   }
}
Методът fill запълва част от предадения масив с value.

Частта от масива, която трябва да се попълни, се определя от индексите from и to.

Ако from е по-малко от 0or ако to  е по-голямо от дължината на масива, тогава методът прекратява незабавно.

„Горната програма има fillметод, който запълва масива, предаден й с value. Тя не запълва целия масив, само частта, определена от индексите fromи to.

"В началото на fillметода предадените стойности се проверяват, за да се гарантира, че са валидни. Ако fromе по-малко от 0 or ако toе по-голямо от дължината на масива, тогава методът fillпрекратява незабавно (изпълнява returnоператор)."

„Разбрах. Това ли е всичко, което прави това изявление?“

„Всъщност returnтвърдението е по-полезно, отколкото си мислите. Толкова е полезно, че се намира в почти всеки метод в Java. И сега ще ви насоча към разбиране защо това е така.

Методи с резултат,void

„Вероятно си спомняте, че има твърдения и има изрази . Каква е разликата между тях?“

„Ако не греша, изразът, за разлика от твърдението, има meaning, което може да се използва някъде.“

„Правилно. И в Java методите също могат да имат стойност . И това е много добра новина: методите не само могат да направят нещо въз основа на входните параметри, но също така, например, да оценят нещо и да върнат резултата от изчислението .

„Между другото, вече сте срещали такива методи:

double delta = Math.abs(d1 - d2);
Методът abs()връща двойно
Scanner console = new Scanner(System.in);
int x = console.nextInt();

Методът nextInt()връща anint
String str = "Hello";
String s2 = str.toUpperCase();
Методът toUpperCase()връща aString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

Методът copyOf()връща anint[]

"Всеки метод може да върне само една стойност от един предварително определен тип . Типът на връщането се определя, когато методът е деклариран:

public static Type name(parameters)
{
  method body
}

Къде nameе името на метода, parametersе списъкът с параметри на метода и typeе типът на резултата, който методът връща.

За методи, които не връщат нищо, има специален тип контейнер: void.

„С други думи, ако напиша своя метод и не искам да връщам нищо, тогава декларирам типа на метода да бъде voidи това е?“

„Да. И трябва да кажа също, че Java има доста такива методи.

Връщане на резултат

„Разбрах How да декларирам метод, който връща резултата от изчисление/работа. Как да върна резултата от самия метод?“

„Това е валиден въпрос. returnИзявлението ни помага тук още веднъж. Предаването на резултат от метод изглежда така:

return value;

" returnИнструкцията ще прекрати метода незабавно. И valueе това, което методът трябва да върне на извикващия метод, когато излезе. Типът valueтрябва да съответства на Typeпосочения в декларацията на метода. Ето няколко примера, за да подкрепите това, което сте научor:

Пример 1. Методът изчислява минимума от две числа:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Методът връща минимум две числа.

Ако a < b
върнете a
В противен случай
върнетеb

Пример 2. Методът дублира изпратения му низ nпъти:

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

   for (int i = 0; i < times; i++);
     result = result + " "+ str;
   return result;
}
Методът приема два параметъра - низ и броя пъти, които низът трябва да се повтори.
Създава се празен низ за бъдещия резултат.

В цикъл с timesитерации интервал и низът strсе добавят към низа result.
Низът resultсе връща като резултат от метода.

Пример 3: Методът изчислява максимума от две числа с помощта на троичния оператор:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Методът връща максимума от две числа.

връщане (ако a > b, тогава a, в противен случай b)

"Отлично. Методите са моята нова суперсила!"

„Само ако се упражнявате достатъчно в практически задачи.