— Снова ты, Амиго. Ну привет.
— Что-то ты не очень рад меня видеть, Диего?
— У меня сложилось впечатление, что ты думаешь, что ты уже выучил всё про методы в Java.
— Не то чтобы…
— Как бы не так! Ты ещё и половины не знаешь.
— Да я и не спо...
— Ладно, хватит разговоров, пора начинать. И начнем мы с чего-нибудь простого. Например, с того, что в Java есть команда (оператор) return. Она позволяет мгновенно завершить работу метода, в котором он был вызван. Внешний вид команды:
return;
— Все просто: одно слово return
и точка с запятой. Как только программа выполнит эту команду, текущий метод завершит работу, и продолжится работа вызвавшего метода.
— Если return
вызвать в методе main
, метод main
тут же завершится, а вместе с ним и вся программа.
Пример:
|
Метод fill заполняет часть переданного массива значением value .Часть массива определяется индексами from и to .Если from меньше 0 или to больше длины массива, метод тут же завершается. |
— В приведенной выше программе есть метод fill
, который заполняет переданный в него массив значением value
, причем заполняет не весь массив, а его часть, заданную индексами from
и to
.
— В начале метода fill
проверяется, корректно ли переданы в него значения. Если from
меньше 0, или to больше длины массива, то метод fill
тут же завершается (вызывает команду return
).
— Понял. И это всё, что делает этот оператор?
— На самом деле оператор return
полезнее, чем тебе сейчас кажется. Он настолько полезен, что есть почти в каждом методе в Java. И сейчас я подведу тебя к мысли, почему так.
Фрагмент лекции JavaRush - университета.
Функции с результатом, void
— Ты, наверное, помнишь, что есть команды, а есть — выражения. В чём их разница?
— Если не ошибаюсь, выражение, в отличие от команды, имеет значение, которое можно где-нибудь использовать.
— Правильно. Так вот, в Java методы тоже могут иметь значение. И это очень хорошая новость: методы могут не просто что-то делать в зависимости от параметров, но и, например, вычислить что-нибудь и вернуть результат вычисления.
— Ты, кстати, с такими методами уже сталкивался:
|
Метод abs() возвращает значение типа double |
|
Метод nextInt() возвращает значение типа int |
|
Метод toUpperCase() возвращает значение типа String |
|
Метод copyOf() возвращает значение типа int[] |
— Каждый метод может вернуть только одно значение одного заранее заданного типа. Тип возвращаемого значения определяется при объявлении метода:
public static тип имя(параметры)
{
код метода
}
Где имя — это имя
метода, параметры
— список параметров метода, а тип
— тип результата, который возвращает метод.
Для методов, которые ничего не возвращают, есть специальный тип-заглушка — void
.
— То есть если я пишу свой метод и не хочу ничего возвращать, то я объявляю тип метода void
, и проблема решена?
— Ага. И, надо сказать, таких методов в Java тоже хватает.
Возвращение результата
— Я понял, как объявлять метод с результатом вычисления/работы. А как этот результат вернуть из самого метода?
— Правильный вопрос. Для этого нам снова пригодится оператор return
. Передача результата из метода будет выглядеть так:
return значение;
— Оператор return
немедленно завершит работу метода. А значение — это значение
, которое должен вернуть метод вызывающему методу в качестве результата в момент завершения работы. Тип значение
обязан совпадать с типом
, указанным при объявлении метода. Вот тебе несколько примеров для закрепления:
Пример 1. Метод вычисляет минимум из двух чисел:
|
Метод возвращает минимум из двух чисел. Если a < b вернуть a Иначе вернуть b |
Пример 2. Метод дублирует переданную в него строку n
раз:
|
Метод принимает два параметра — строку и количество ее повторений. Создается пустая строка для будущего результата. В цикле times раз к строке result добавляется пробел и строка str .В качестве результата метода возвращается переменная result . |
Пример 3: Метод вычисляет максимум из двух чисел с помощью тернарного оператора:
|
Метод возвращает максимум из двух чисел. вернуть (если a > b , то a , иначе b )
|
— Отлично. Методы — моя новая суперсила!
— Только если потренируешься на задачках достаточно. Отбой.
Фрагмент лекции JavaRush - университета.