JavaRush /Курси /JAVA 25 SELF /Повернені значення та return

Повернені значення та return

JAVA 25 SELF
Рівень 8 , Лекція 3
Відкрита

1. Вступ

Почнемо з питання: навіщо методу щось повертати? Чому не можна просто робити все всередині методу й виводити результат на екран?

Часто потрібно не просто виконати якусь дію, а отримати результат, який потім знадобиться в інших частинах програми. Наприклад:

  • Метод обчислює суму двох чисел і повертає її, щоб використати цей результат у подальших обчисленнях.
  • Метод визначає, чи є число парним, і повертає true або false, щоб прийняти рішення.
  • Метод повертає рядок привітання для користувача — далі ви вирішуєте, куди його передати: вивести на екран, записати у файл або надіслати мережею.

Якби методи завжди просто друкували результат, програма була б жорстко привʼязана до одного сценарію, а повторно використовувати їхню логіку було б складно. Повернене значення робить методи гнучкими та універсальними.

Аналогія

Уявіть кавовий автомат. Ви кладете гроші, натискаєте кнопку — і отримуєте каву. Якби автомат просто голосно казав «Каву зварено!» (але не видавав каву), це було б не надто корисно. Так і з методами: іноді потрібно не просто почути «Зроблено!», а отримати результат.

2. Тип поверненого значення: що може повертати метод

Оголошуючи метод у Java, ви вказуєте тип поверненого значення. Це може бути будь-який тип: int, double, String, boolean, масив — або навіть обʼєкт вашого власного класу. Якщо метод нічого не повертає — пишете void.

Синтаксис:

тип_поверненого_значення назваМетоду(параметри)
{
    // тіло методу
}
Сигнатура методу

Приклади:

int sum(int a, int b) 
{
    // повертає int
}

String getGreeting(String name) 
{
    // повертає String
}

boolean isEven(int number) 
{
    // повертає boolean
}

void printHello() 
{
    // нічого не повертає — просто виконує дію
}

Важливо! Тип поверненого значення — це «обіцянка» методу: він зобовʼязаний повернути значення цього типу. Якщо ви пообіцяли повернути int, а повертаєте String, — компілятор повідомить про помилку й не дозволить скомпілювати програму.

3. Оператор return: як повернути значення з методу

Щоб віддати результат роботи методу «назовні», використовують оператор return. Цей оператор сигналізує: «Ось результат — виконання методу завершено».

int sum(int a, int b) 
{
    int result = a + b;
    return result; // повертаємо результат
}
Повернення значення через return

Можна й коротше:

int sum(int a, int b) 
{
    return a + b;
}

Коли метод доходить до рядка return, він завершує виконання, повертає вказане значення й передає його туди, звідки був викликаний.

Важливо: тип значення після return має збігатися з оголошеним типом методу.

4. Використання поверненого значення: де його застосувати?

Коли метод повертає значення, ви можете:

  • Зберегти його у змінну.
  • Використати прямо у виразі.
  • Передати іншому методу.
int result = sum(5, 7); // зберігаємо у змінну
System.out.println(result); // виводимо результат

System.out.println(sum(10, 20)); // одразу виводимо результат

if (isEven(42)) 
{
    System.out.println("Число парне!");
}

Приклад: метод, що повертає рядок

String getGreeting(String name) 
{
    return "Привіт, " + name + "!";
}

// Використання:
String greeting = getGreeting("Аліса");
System.out.println(greeting); // Привіт, Аліса!

5. Практика: приклади методів із поверненим значенням

Метод, що повертає максимум із двох чисел

int max(int a, int b) 
{
    if (a > b) 
    {
        return a;
    } 
    else 
    {
        return b;
    }
}

Можна ще коротше, якщо ви вже опанували тернарний оператор:

int max(int a, int b) 
{
    return (a > b) ? a : b;
}

Використання:

int maximum = max(10, 25);
System.out.println("Максимум: " + maximum); // Максимум: 25

Метод, що повертає true, якщо число парне

boolean isEven(int number) 
{
    return number % 2 == 0;
}

Використання:

if (isEven(18)) 
{
    System.out.println("Число парне!");
} 
else 
{
    System.out.println("Число непарне!");
}

Метод, що повертає суму елементів масиву

int sumArray(int[] arr) 
{
    int sum = 0;
    for (int i = 0; i < arr.length; i++) 
    {
        sum += arr[i];
    }
    return sum;
}

Використання:

int[] grades = {5, 4, 3, 5, 4};
int total = sumArray(grades);
System.out.println("Сума оцінок: " + total);

6. Що відбувається під час виклику методу з return

Коли ви викликаєте метод із поверненим значенням, виконання програми ніби «заходить» усередину методу, виконує його код, доходить до return, повертає значення — і підставляє його на місце виклику.

Схематично:

int a = 2;
int b = 3;
int c = sum(a, b); // тут викликається sum(2, 3), повертається 5, c дорівнює 5

Блок-схема

        graph TD
        A["main"] --> B["sum(a, b)"]
        B --> C[обчислення]
        C --> D[return result]
        D -->|результат повертається| A
    

7. Корисні нюанси

return завершує виконання методу

Щойно в методі трапляється return, виконання методу миттєво переривається. Усе, що написано після нього, — не виконується.

int test()
{
    return 42;
    System.out.println("Це не буде виведено"); // unreachable
}

return у методі типу void

У методі void (який нічого не повертає) можна використовувати return без значення — просто щоб достроково завершити виконання методу, наприклад, за певної умови.

void printPositive(int number)
{
    if (number <= 0) 
    {
        System.out.println("Число не додатне!");
        return; // просто виходимо з методу
    }
    System.out.println("Число: " + number);
}

8. Типові помилки під час роботи з return

Помилка № 1: Не всі шляхи повертають значення

int getSign(int number)
{
    if (number > 0) 
    {
        return 1;
    }
    // А якщо number <= 0? Немає return!
}
// Помилка: не всі гілки коду повертають значення

Як це виправити: завжди передбачайте return на всіх шляхах виконання.

int getSign(int number)
{
    if (number > 0) 
    {
        return 1;
    } 
    else if (number < 0) 
    {
        return -1;
    } 
    else 
    {
        return 0;
    }
}

Помилка № 2: Невідповідність типу поверненого значення

int getNumber()
{
    return "42"; // Помилка! Очікувався int, а не String
}

Помилка № 3: return після return

int test()
{
    return 5;
    System.out.println("Це не виконається"); // unreachable statement
}

Помилка № 4: return з виразом у void-методі

void printSomething()
{
    return 42; // Помилка! void-метод не може повертати значення
}

Помилка № 5: Ігнорування поверненого значення

sum(10, 20); // результат не збережено — він втрачений

Якщо ви не використовуєте повернене значення, воно просто губиться. Не забувайте його зберігати або передавати далі в коді!

Помилка № 6: Очікування, що return щось виводить

int result = sum(2, 3);
// return нічого не друкує!
// Потрібно явно вивести:
System.out.println(result);
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ