Условия и циклы ·
‹ Предыдущий Следующий ›
⏱ 5 минут чтения Обновлено: 2026-07-13

Оператор return в Java

Оператор return в Java завершает выполнение текущего метода и возвращает управление вызывающему коду. Если метод объявлен с типом возвращаемого значения, return дополнительно передаёт результат — значение, которое получит вызывающая сторона.

Что делает оператор return

У оператора return две формы записи:

return;            // завершает метод без возврата значения (только void)
return expression; // завершает метод и возвращает значение выражения

В обоих случаях выполнение метода прекращается немедленно: операторы, стоящие после return, не выполняются, а программа продолжает работу с того места, откуда метод был вызван.

Форма Где применяется Что делает
return; Методы void, конструкторы Досрочно завершает метод без значения
return expression; Методы с типом возвращаемого значения Завершает метод и возвращает результат
Без return Только методы void Метод завершается после последнего оператора

return в методах void: досрочный выход

Если метод объявлен как void, то есть не возвращает значение, оператор return писать не обязательно — метод сам завершится, когда выполнится его последний оператор. Однако return; без значения удобно использовать для досрочного выхода из метода, например когда дальнейшие действия не имеют смысла:

public class ReturnExample1 {
    public static void main(String[] args) {
        boolean t = true;
        System.out.println("До возврата.");
        if (t) {
            return;
        }
        System.out.println("Этот оператор выполняться не будет.");
    }
}

Результат выполнения кода:

До возврата.

Как только выполнение доходит до return внутри блока оператора if, метод main завершается, и второй вызов println не срабатывает. Такой ранний выход по условию часто применяют для проверки входных параметров в начале метода: если данные некорректны, метод сразу завершается, а основная логика не выполняется.

Важно

Оператор return завершает только текущий метод, а не всю программу. Программа продолжит выполняться с места вызова метода. Полностью остановить работу JVM можно вызовом System.exit(0) — но в обычном коде это почти никогда не требуется. В примере выше return завершает программу лишь потому, что находится в методе main.

Возврат значения из метода

Если в объявлении метода указан тип возвращаемого значения (не void), оператор return обязателен. После ключевого слова return указывается выражение, значение которого возвращается из метода. Тип этого выражения должен быть совместим с типом, объявленным в сигнатуре:

public class ReturnExample2 {
    public static void main(String[] args) {
        double d = getRandomValue(3);
        System.out.println(d);
    }

    public static double getRandomValue(int i) {
        return Math.random() * i;
    }
}

Возможный результат выполнения кода (число случайное, при каждом запуске будет другим):

1.8536012182872652

Метод getRandomValue объявлен с типом double, поэтому обязан вернуть значение этого типа по каждому возможному пути выполнения. Выражение Math.random() * i вычисляется, и его результат передаётся в точку вызова — там он присваивается переменной d.

В методе может быть несколько операторов return — по одному на каждую ветку логики:

public static int sign(int value) {
    if (value > 0) {
        return 1;
    }
    if (value < 0) {
        return -1;
    }
    return 0;
}

Компилятор следит, чтобы значение возвращалось при любом исходе: уберите последний return 0; — и код перестанет компилироваться.

Частые ошибки при работе с return

Недостижимый код (unreachable statement). Любой оператор, стоящий сразу после return в том же блоке, никогда не выполнится, и компилятор сообщит об ошибке:

public static int square(int x) {
    return x * x;
    // System.out.println("Готово"); // ошибка компиляции: unreachable statement
}

Не все пути возвращают значение (missing return statement). Если хотя бы одна ветка выполнения метода с возвращаемым типом не заканчивается оператором return, компиляция завершится ошибкой:

public static int sign(int value) {
    if (value > 0) {
        return 1;
    }
    // ошибка компиляции: missing return statement —
    // при value <= 0 методу нечего вернуть
}

Значение в void-методе. Оператор return со значением внутри метода void — ошибка компиляции («cannot return a value from method whose result type is void»). В void-методах допустима только форма return; без выражения.

Путаница между return и break. Оператор break прерывает только цикл или switch, а return — весь метод, включая все циклы внутри него. Подробнее о break и continue — в уроке об операторах перехода.

Часто задаваемые вопросы

Можно ли использовать несколько операторов return в одном методе?

Да, это допустимо и широко применяется: ранние выходы (guard clauses) в начале метода часто делают код чище, чем один return с глубокой вложенностью if-else. Важно лишь, чтобы каждый возможный путь выполнения метода с возвращаемым типом заканчивался оператором return или выбрасыванием исключения.

Чем return отличается от break?

Оператор break завершает только ближайший цикл или switch, после чего выполнение метода продолжается. Оператор return завершает весь метод целиком: если он вызван внутри цикла, то одновременно прервёт и цикл, и метод.

Что означает ошибка компиляции "missing return statement"?

Она означает, что метод объявлен с типом возвращаемого значения, но существует путь выполнения, который не заканчивается оператором return. Чаще всего это if без ветки else: компилятор не гарантирует истинность условия, поэтому требует return и для случая, когда условие ложно.

Выполнится ли блок finally, если в try есть return?

Да. Оператор return в блоке try сначала вычисляет возвращаемое значение, затем выполняется блок finally, и только после этого метод завершается. Писать return внутри самого finally не рекомендуется: он перекроет значение из try и скроет исключения.

Презентация с видео на Patreon →

Видео объяснение

Предпочитаете видеоформат? Посмотрите этот урок с примерами и объяснениями.

Комментарии

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.