Что делает ключевое слово return в методе void в Java?
Я новичок в Java. Кто-нибудь может сказать мне, почему он там? Насколько я знал, return внутри метода void не допускается.
7 ответов
он просто выходит из метода в этот момент. После return выполняется, остальная часть кода не будет выполнена.
обратите внимание, что компилятор достаточно умен, чтобы сказать вам, какой код не может быть достигнуто:
вы можете return в методе void вы просто не можете вернуть любое значение (например, return 5; ), вот почему они называют это пустота метод. Некоторые люди всегда явно заканчивают методы void с помощью оператора return, но это не обязательно. Это can используйте, чтобы оставить функцию рано, хотя:
ключевое слово просто выскакивает кадр из стека вызовов, возвращая элемент управления в строку после вызова функции.
язык Java спецификация говорит, что вы можете иметь return без выражения, если ваш метод возвращает void.
Он функционирует так же, как возврат для функции с указанным параметром, за исключением того, что он ничего не возвращает, так как нечего возвращать, и управление передается обратно вызывающему методу.
Он выходит из функции и возвращает ничего.
что-то вроде return 1; было бы неверно, так как он возвращает целое число 1.
посмотреть этот пример, вы хотите добавить в список условно. Без слова «return» все ifs будут выполнены и добавлены в ArrayList!
BestProg
Содержание
Поиск на других ресурсах:
1. Понятие метода. Определение метода в классе
Как известно, классы могут содержать данные и методы. В Java данные еще называют переменные экземпляра или объекты. Методы еще называются подпрограммы или функции. Метод – это подпрограмма обозначенная именем. по эту имени можно вызывать код подпрограммы (код метода). Вызов метода по имени может осуществляться из другого метода многократно в зависимости от выполняемой задачи. При каждом вызове имени метода вместо этого имени выполняется код метода.
Методы в классе – это именованный программный код, который определяет некоторую работу над данными класса. Класс может содержать любое количество методов. Кроме того, класс может быть реализован без методов. Чаще всего методы класса обрабатывают данные (переменные экземпляров) класса.
2. Параметры методов. Возврат значений из методов
Методы могут получать параметры. По количеству получаемых параметров методы делятся на:
Более подробно о параметрах методов описывается в следующей теме:
Метод может возвращать значение. Перед именем метода указывается тип значения, которое метод возвращает. С точки зрения возвращения значения из метода, методы могут быть двух видов:
3. Общая форма объявления метода возвращающего значение
Метод может возвращать значение. Такой метод может использоваться в выражениях. Так, в языке программирования Паскаль, методы, которые возвращают значение имеют название функция.
Общая форма объявления метода, который возвращает значение и получает параметры, имеет следующий вид:
Если метод возвращает значение и не получает параметров, то общая форма такого метода следующая:
4. Методы, которые не возвращают значение. Общая форма. Ключевое слово void
Общая форма объявления метода, который не возвращает значения но получает параметры имеет вид:
Если метод не возвращает значения и не получает параметров, то общая форма такого метода следующая:
5. Примеры методов, которые не получают параметры и не возвращают значения
Такой метод можно записать и по другому
Использование метода ShowInfo() класса DemoMethods в другом коде может быть следующим:
В результате вызова метода в консоли будет выведен следующий результат:
6. Примеры методов, которые не получают параметров и возвращают значение
Ниже демонстрируется использование метода Pi() для вычисления площади круга:
Использование класса Circle может быть следующим
7. Примеры методов, которые получают параметры и не возвращают значения
Объявление класса Month следующее:
Демонстрация использования метода следующая:
8. Примеры методов, которые получают параметры и возвращают значение
Реализация класса Solution следующая
Использование класса Solution в некотором методе
Реализация класса следующая
Ниже приведен фрагмент кода, который демонстрирует использование методов класса Line
9. Может ли тело метода быть пустым?
Тело метода может быть пустым, то есть не содержать ни единого оператора. Методы без операторов могут использоваться как методы-заглушки, которые на данный момент не содержат кода, но в которые в дальнейшем может быть вписан необходимый код.
10. Каким образом имя метода используется в выражениях? Пример
Тогда, имя метода p() может использоваться для вычислений в разных выражениях. Например
В вышеприведенном коде, имя метода p() используется для вычисления выражения:
Оператор return используется для возврата значения из метода. Оператор return может иметь две формы применения. В первом случае общая форма оператора return имеет вид:
где expression – некоторое выражение, переменная или константа. Эта форма применения используется, когда метод возвращает значение. Имя такого метода может использоваться в выражениях, если тип expression поддерживает такое применение.
Вторая форма оператора return следующая:
Пример 1. Демонстрируется использование оператора return в методе, который возвращает результат типа double
Пусть задан класс A
Использование метода CreateObj() может быть следующим
Пример 3. Демонстрируется использование оператора return из метода, который не возвращает никакого значения.
Pro Java
Страницы
3 мая 2015 г.
Оператор return
Оператор return используется для выполнения явного возврата из метода. То есть он снова передает управление объекту, который вызвал данный метод. Как таковой этот оператор относится к операторам перехода. Хотя полное описание оператора return придется отложить до рассмотрения классов и их методов, все же кратко ознакомимся с его особенностями.
Оператор return предписывает интерпретатору Java остановить выполнение текущего метода. Если метод возвращает значение, оператор return сопровождается некоторым выражением. Значение этого выражения становится возвращаемым значением метода.
Некоторые методы объявляются как void, так как они не возвращают никакого значения. Интерпретатор Java выполняет такие методы путем последовательного выполнения операторов до тех пор, пока он не достигнет конца метода. Выполнив последний оператор, интерпретатор выполняет возврат. Однако иногда метод void должен завершиться, не дожидаясь выполнения последнего оператора. В этом случае можно использовать оператор return без выражения.
Теперь это все надо пояснить на примере, и хотя классы мы еще не проходили, я надеюсь что этот пример будет понятным, а если нет, то не страшно, путь этот материал отложится на подкорку.
Чтобы изобразить пример нам понадобятся два класса, один с методом main, другой просто класс с вызываемыми статическими методами. Если не понятно что такое статические методы, то не переживайте, это скажем ну просто вызываемые “подпрограммы”. И так код в студию:
“Главная программа” (главный класс с методом main)
В строках 8 и 10 вызывается метод vReturn, который не возвращает ни каких значений, а просто вывод, в зависимости от переданного в него значения, то или иное сообщение.
В строках с 13 по 15 вызывается метод strReturn, который возвращает разные строки в зависимости от переданного в него значения.
Передаваемые в методы значения заключены в круглые скобки.
И вызываемая “подпрогорамма” (класс с вызываемыми статическими методами)
Метод vReturn не выводит ни какого сообщения если в него передано значение больше пяти, в ином случае он выводит сообщение.
Метод strReturn возвращает в виде значения строку, содержимое которой сообщает о том больше или равен переданный параметр пяти или же он меньше пяти.
В операторе if в строках 13 и 14 не использованы фигурные скобки, так как в них нет необходимости, хотя это и повысило бы читаемость кода.
В принципе, в коде этих классов нет ни чего сложного и не понятно. Но даже если это не понятно, то скоро мы уже перейдем к изучению классов и там все прояснится.
И надеюсь вывод, который генерируют данные классы, поможет понять как работает оператор return:
Первый вызов метода vReturn был сделан с параметром 3 и поскольку он меньше 5, то было напечатано сообщение из этого метода. Второй же вызов этого метода был сделан с параметром 7 и поэтому сразу же произошел возврат из метода, так как 7 больше 5 и данный метод ни чего не напечатал.
Метод strReturn возвращает строку в зависимости от переданного в нее параметра.
Методы
Общая форма объявления метода выглядит следующим образом:
Метод может не иметь параметров, в этом случае используются пустые скобки. Модификатор определяет видимость метода (public, private). Если модификатор не указан, то считается, что метод имеет модификатор private в пределах своего пакета.
Методы могут вызывать другие методы.
Каждый метод начинается со строки объявления внутри круглых скобок, которую называют сигнатурой метода:
Если рассмотреть данный метод, то можно сказать следующее. Ключевое слово public означает, что метод доступен для любого класса. Ключевое слово static означает, что нам не нужно создавать экземпляр (копию) объекта Cat в памяти. Ключевое слово void означает, что метод не возвращает никаких данных. Именем метода является слово перед круглыми скобками.
Вспомним наш класс Box, в котором определены высота, ширина и глубина ящика. Зная эти величины, мы вычисляли объём коробки самостоятельно. Но мы можем расширить возможности класса, чтобы он сам мог вычислить объём внутри класса и предоставить нам готовые данные. Давайте добавим в класс новый метод:
Теперь пробуем вычислить объём коробки с помощью готового метода, который есть в классе:
Мы уже не вычисляем объём вручную, за нас это сделает класс Box, у которого есть готовый метод для вычисления объёмов.
Обращение к методу осуществляется как и к переменной через точку. Наличие круглых скобок позволяет различать метод от имени переменной. То есть, если вы увидите запись:
Использование параметров
Параметры позволяют работать с различными данными. Допустим, мы хотим вычислить площадь прямоугольника со сторонами 3 и 5 см.
Метод работает, но область его применения слишком ограничена. Мы сможем вычислять площадь только одного прямоугольника с жёстко заданными размерами. Но прямоугольники бывают разными и нам нужен универсальный метод. Добиться решения задачи можно с помощью параметров. Перепишем метод следующим образом:
Теперь мы можем вычислять площадь любого прямоугольника, зная его размеры. Возьмём тот же прямоугольник со сторонами 3 и 5 см и вычислим его площадь:
В правильно написанных классах стараются избегать доступа к переменным класса напрямую. Следует использовать методы, которые позволяют избежать ошибок. В нашем классе Box использовались отдельные переменные width, height, depth. Код с использованием этих переменных слишком громоздкий, кроме того вы можете забыть про какую-нибудь переменную. Добавим в класс новый метод, который упростит наш код для вычисления объёма ящика:
Пробуем класс в действии:
Теперь мы не обращаемся к отдельным переменным класса, а вызываем метод setDim() для установки размеров ящика, после чего можно вызвать метод getVolume() для вычисления объёма. Естественно, вы можете реализовать свою логику в классе. Например, вы можете создать метод getVolume() с параметрами, которые отвечают за размеры ящика и возвращать сразу готовый результат.
Перегрузка методов
Java, как и многие языки программирования, разрешает создавать внутри одно класса несколько методов с одним именем. Главное, чтобы у них различались параметры. Параметры могут различаться типами или количеством аргументов. Будьте внимательны, если вы зададите различные типы для возвращаемого значения, то этого будет недостаточно для создания перегруженной версии метода. Когда Java встречает вызов перегруженного метода, то выбирает ту версию, параметры которой соответствуют аргументам, использованным в вызове.
Создадим класс Cat с набором перегруженных методов:
Вы можете вызвать любой метод из класса:
Если присмотреться, то можно догадаться, какая именно версия метода вызывается в каждом конкретном случае.
Аналогично, перегрузка используется и для конструкторов.
Методы с переменным числом параметров
Можно создавать методы с переменным числом параметров. В этом случае используется многоточие.
По сути, создаётся массив типа Object[].
Создадим метод, вычисляющий и возвращающий максимальное из произвольного количества значений.
До Java 5 использовался следующий способ.
Подобный код может встречаться в старых проектах, но в Android практически не используется.
Метод toString()
Каждый класс реализует метод toString(), так как он определён в классе Object. Но использовать метод по умолчанию не слишком удобно, так как не содержит полезной информации. Разработчики предпочитают переопределять данный метод под свои нужды. Сам метод имеет форму:
Вам остаётся возвратить объект класса String, который будет содержать полезную информацию о вашем классе. Давайте возьмём для примера класс Box, созданный выше:
Теперь можете узнать о классе Box:
Метод очень часто используется при создании собственных классов и вам тоже придётся прибегать к этому способу.
Как вернуть из метода больше одного значения?
Методы в Java возвращают одно значение. А если хочется сразу вернуть сразу два и более значений? Например, у нас имеется массив чисел и мы хотим написать метод, который сразу возвращает минимальное и максимальное значение из него.
Одно из решений заключается в том, что нужно «запаковать» два значения полученные в одном методе с помощью конструктора специального класса, а затем «распаковать» их в другом методе, при обращении к конструктору.
Что делает ключевое слово return в методе void в Java?
Я новичок в Java. Кто-нибудь может сказать мне, почему это там? Насколько мне известно, return внутри метода void не допускается.
7 ответов
В этот момент он просто выходит из метода. После выполнения return остальной код выполняться не будет.
Обратите внимание, что компилятор достаточно умен, чтобы сказать вам, что какой-то код недоступен:
У вас может быть return в методе void, вы просто не можете вернуть какое-либо значение (как в return 5; ), поэтому они называют его void метод. Некоторые люди всегда явно заканчивают void-методы оператором return, но это не обязательно. Однако его можно использовать для преждевременного выхода из функции:
Ключевое слово просто выталкивает кадр из стека вызовов, возвращая элемент управления в строку, следующую за вызовом функции.
В спецификации языка Java говорится, что вы можете вернуть без выражения, если ваш метод возвращает void.
Он выходит из функции и ничего не возвращает.
Что-то вроде return 1; было бы неверным, поскольку оно возвращает целое число 1.
Смотрите этот пример, вы хотите условно добавить в список. Без слова «return» все if будут выполнены и добавлены в ArrayList!
Он работает так же, как возврат для функции с указанным параметром, за исключением того, что он ничего не возвращает, так как нечего возвращать, и управление передается обратно вызывающему методу.