Зачем возвращать что-либо из методов?
Зачем мы в методах вообще что-либо возвращаем? Переменная ведь и так в себе будет содержать результат, зачем его еще возвращать то? Не совсем понимаю, вот например вырванный из контекста:
int a = scan.nextInt();
int b = scan.nextInt();
int result = a + b;
return result;
Ответы (2 шт):
Зачем мы в методах вообще что либо возвращаем?
Ну если метод объявлен как функция, то есть должен возвращать значение, то это обязательно.
Переменная ведь и так в себе будет содержать результат, зачем его еще возвращать то?
Переменная 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) твоего заказа с определённым номером на кухню, как-то так...