Бесплатный курс по java. Зарегистрируйтесь для отслеживания прогресса →

Java: Возврат значений

Методы в Java становятся по настоящему полезными, когда они начинают возвращать данные, вместо печати их на экран. Тогда мы можем их использовать для дальнейших вычислений. Посмотрите на пример:

var message = App.greetHexlet();
System.out.println(message);

Мы присваиваем переменной результат работы метода. Для работы такого кода, метод должен внутри себя использовать инструкцию return:

// внутри класса App
// Вместо Void теперь String, потому что у метода есть возврат
public static String greetHexlet() {
    var message = "Hello, Hexlet!";
    return message;
}

return особая инструкция, которая берет выражение записанное справа и отдает его наружу, тому коду, который вызвал метод. Само выполнение метода на этом завершается, любой код после return не выполняется:

// внутри класса App
public static String greetHexlet() {
    var message = "Hello, Hexlet!";
    return message;
    System.out.println("Я никогда не выполнюсь");
}

Если метод возвращает значение, то его тип должен быть указан в определении метода. Здесь не получится использовать var, функция должна однозначно описывать свой возврат.

Для возврата не обязательно использовать переменную. Так как return работает с выражениями, то справа от него может появиться почти все что угодно. Здесь нужно руководствоваться принципами читаемости кода:

public static String greetHexlet() {
    return "Hello, Hexlet!";
}

И пример с вычислением:

public static int doubleFive() {
    return 5 + 5;
}

Вопрос на самопроверку. Что выведет этот код?

// Определение
public static int run() {
  return 5;
  return 10;
}

// Использование
App.run(); // => ?

Задание

Реализуйте статический метод getCurrentYear(), который возвращает наружу текущий год

App.getCurrentYear(); // => 2021

Для выполнения этого задания, вам понадобится выполнить несколько действий:

  • Получить текущую дату с помощью метода LocalDate.now(). Этот метод возвращает объект типа LocalDate. В реальности у этого метода есть метод getYear(), который выполняет нашу задачу. Но здесь мы хотим потренироваться.
  • Преобразовать дату в строку с помощью метода toString(). Формат строки: yyyy-mm-dd, например, 2021-11-05
  • Извлечь из нее год с помощью метода substring()
  • Преобразовать год из строки в число с помощью метода Integer.parseInt() и вернуть наружу

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе