Зачем возвращать что-либо из методов?

Зачем мы в методах вообще что-либо возвращаем? Переменная ведь и так в себе будет содержать результат, зачем его еще возвращать то? Не совсем понимаю, вот например вырванный из контекста:

int a = scan.nextInt();
int b = scan.nextInt();
int result = a + b;
return result;

Ответы (2 шт):

Автор решения: Roman C

Зачем мы в методах вообще что либо возвращаем?

Ну если метод объявлен как функция, то есть должен возвращать значение, то это обязательно.

Переменная ведь и так в себе будет содержать результат, зачем его еще возвращать то?

Переменная result - это автономная переменная, которая оптимизируется компилятором с использованием регистров. Время жизни такой переменной измеряется внутри блока или метода, в котором она объявлена, а ее значение возвращается в место вызова этого метода. Результат вычислений, который присваивается этой переменной виден только в блоке, где эта переменная создана. Создание дополнительных переменных в коде полезно для того, чтобы придать коду наглядность и облегчить отладку. В других случаях она бесполезна, текущий код можно переписать так

int a = scan.nextInt();
int b = scan.nextInt();
return a + b;

Возвращать или не возвращать значение из метода определяется его сигнатурой. Если мы хотим сохранить результат вычислений то, существует множество способов это сделать. Например мы можем использовать другие объекты и методы. Эти объекты должны быть доступны в методе, или являются переменными класса, или передаются с помощью параметров, и т.д.


Вот что по этому поводу написано в Java Tutorial:

Возврат значения из метода: Метод возвращается к коду, который его вызвал, когда он

  • завершает все операторы в методе,
  • достигает оператора возврата, или
  • выдает исключение (рассмотрено позже), в зависимости от того, что произойдет первым.

Вы объявляете возвращаемый тип метода в его объявлении метода. В теле метода вы используете оператор return для возврата значения.

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

  • возвращаться; Если вы попытаетесь вернуть значение из метода, который объявлен как void, вы получите ошибку компилятора.

Любой метод, который не объявлен как void, должен содержать оператор return с соответствующим возвращаемым значением, например:

  • вернуть возвращаемое значение; Тип данных возвращаемого значения должен соответствовать объявленному типу возвращаемого значения метода; вы не можете вернуть целочисленное значение из метода, объявленного для возврата логического значения.

Метод getArea() в классе Rectangle, который обсуждался в разделах, посвященных объектам, возвращает целое число:

// метод вычисления площади прямоугольника
        
public int getArea() {
        return width * height;
}

Этот метод возвращает целое число, которое оценивается выражением ширина*высота.

Метод getArea() возвращает примитивный тип. Метод также может возвращать ссылочный тип. Например, в программе для управления объектами Bicycle у нас может быть такой метод:

public Bicycle seeWhosFastest(Bicycle myBike, Bicycle yourBike,
                              Environment env) {
    Bicycle fastest;
    // code to calculate which bike is 
    // faster, given each bike's gear 
    // and cadence and given the 
    // environment (terrain and wind)
    return fastest;
}
→ Ссылка
Автор решения: стасевич

мы вызываем метод(функцию) чтобы получить какой-то результат.
return возвращает результат работы метода и/или завершает работу метода.

если написать

public void method(){
    return;
}

ide тебе напишет что команда return; в методе с возвращаемым типом void избыточна, в этом случае return; завершает работу метода. т.е. каждый метод неявно заканчивается return;

другой пример, в зависимости от переданного параметра мы возвращаем определённое сообщение

public class Main {
    public static String select(int number) {
        if (number > 10) return "больше 10";
        if (number < 0) return "меньше 0";
        else return "0";
    }

    public static void main(String[] args) {
        System.out.println(select(0)); // 0
        System.out.println(select(11)); // больше 10
        System.out.println(select(-1)); // меньше 0
    }
}

хороший пример написал МВо про бургеры, ты у электронного болвана вызываешь метод оформить заказ, выбираешь на экране входящие параметры - кола, бургер, картошка и при нажатии оплатить оформляешь заказ, т.е. данный метод возвращает(делает return) твоего заказа с определённым номером на кухню, как-то так...

→ Ссылка