Мы используем return если хотим чтобы это значение ХРАНИЛОСЬ в переменной.
Мы используем void метод если значение нигде не будет храниться. То есть к примеру есть метод но он void и он рассчитывает объем фигуры. Но значение рассчитанного объема не будет храниться где-либо. Она просто будет выводиться при вызове метода. Правильно ли я понял?
Java
Правильно ли я понимаю return и void?
У функции есть возвращаемое значение, её результат. Для возврата значения используется "return значение". Если функция не возвращает результат (и по сути не является функцией), то она имеет тип void. В этом случае функция всё равно может возвращать значение (или даже несколько значений), но неявно, каким-то другим способом.
Возвращаемое значение может не храниться в переменной. Оно может сразу теряться или использоваться "на лету": например так:
y = sqrt(sin(x)) + 1;
Тут значение sin не хранится в переменной, а передаётся в функцию sqrt. И результат sqrt тоже не хранится в переменной, а складывается с единицей.
Возвращаемое значение может не храниться в переменной. Оно может сразу теряться или использоваться "на лету": например так:
y = sqrt(sin(x)) + 1;
Тут значение sin не хранится в переменной, а передаётся в функцию sqrt. И результат sqrt тоже не хранится в переменной, а складывается с единицей.
Неправильно.
Ничто не мешает тебе использовать return, даже если метод объявлен как void.
Например:
void Foo()
{
return;
}
ВНЕЗАПНО работает же, да?
Ничто не мешает тебе использовать return, даже если метод объявлен как void.
Например:
void Foo()
{
return;
}
ВНЕЗАПНО работает же, да?
return означает "передача контроля вызываещему коду"
лучше всего понять как это работает на уровне машинных команд, стека, регистров, языка ассемблера. Тогда станет ясно, как происходит вызов функций, передача параметров, возврат, почему возможна рекурсия
Нет не совсем так.
return это выход из функции. В функции может быть далеко не один return. То что стоит после слова return при выходе из функции "появится" на месте где была вызвана функция. Пример:
double sum(double a, double b)
{
return a + b; //вернет сумму a и b
}
sum(10.3, 5.5); //тут появится результат сложения чисел 10.3 плюс 5.5 - 15.8. Но так как мы с результатом ничего не делаем то он "пропадет".
double result = sum(10.3, 5.5); //в данном случае на месте вызова функции sum появится результат сложения. И код будет равносилен такому
double result = 15.8;
void это тип возвращаемого значения. И этот тип говорит что мы не собираемся ничего возвращать из функции. То есть предполагается что на месте вызова функции ничего не "появится".
return это выход из функции. В функции может быть далеко не один return. То что стоит после слова return при выходе из функции "появится" на месте где была вызвана функция. Пример:
double sum(double a, double b)
{
return a + b; //вернет сумму a и b
}
sum(10.3, 5.5); //тут появится результат сложения чисел 10.3 плюс 5.5 - 15.8. Но так как мы с результатом ничего не делаем то он "пропадет".
double result = sum(10.3, 5.5); //в данном случае на месте вызова функции sum появится результат сложения. И код будет равносилен такому
double result = 15.8;
void это тип возвращаемого значения. И этот тип говорит что мы не собираемся ничего возвращать из функции. То есть предполагается что на месте вызова функции ничего не "появится".
Похожие вопросы
- Нас обманывали! Что на самом деле означает synchronized void doSomething()
- объясните зачем метод void в java? как можно проще, я новичек К примеру тут public static void main (string[] args)
- Java не правильно отображает Русский Язык
- Должен ли начинающий программист понимать все алгоритмы сразу ?
- Не понимаю часть материала Head First Java.
- Правильно ли я понял наследование?
- Как правильно учить, есть книга например Java8 для начинающих, нужно ли что то записывать или же стараться
- Программирование - как правильно начать?
- Вот, чуть погодя, понял, что не все сайты предоставляют API, отсюда вопрос: как правильно парсить сайты? ¦|¦ JAVA
- Как можно протестировать этот код и понять правильно он работает? JUnit 4. NetBeans.
если в Экслипсе рабоаете, попробуйте поставить плаги SonarLint
он сразу прикапается к такому return
хотя плагин скорее полезный, чем надоедливый...
да и настраиваемый...