java что значит возвращает значение
Почему функция «возвращает» значение?
Изучающие программирование часто удивляются: почему функция «возвращает» результат? Почему именно такое странное слово — «возврат»? Как будто мы сначала даём ей результат, а потом она его возвращает обратно.
Понятно, что это не так. Мы даём функции аргументы (а иногда и вообще не даём ничего), а она даёт нам в ответ какую-то информацию… А иногда не даёт! Тогда мы говорим «она ничего не возвратила».
Дело в том, что return означает не возврат информации, а возврат управления.
При вызове функции текущий код становится на паузу и передаёт управление в функцию. Функция делает свои дела и возвращает управление в то место, где происходил вызов. И заодно может отправить какую-то информацию туда.
Что за управление? Управление той штукой, которая исполняет код. Грубо говоря — управление компьютером. Код передаёт функции пульт управления компьютером, а функция потом возвращает его обратно.
Мы привыкли читать подобный код как «функция возвращает значение answer », но правильнее будет читать «функция возвращает управление в место вызова и отправляет туда значение answer».
Именно поэтому внутри функции возможен такой код:
Здесь функция не «возвращает ничего», а «возвращает управление в место вызова и не отправляет туда никакую информацию».
Конечно, такая формулировка хоть и технически более корректна, в реальной жизни нет смысла отказываться от «возвращает значение». Это, можно сказать, общепринятое сокращение.
Полезная информация Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Вызываем методы, возвращаем значение
— Ладно, давай зайдем с другой стороны. Я тебе сейчас расскажу как работает вызов методов, а ты потом еще раз попробуешь пробежаться по предыдущей лекции, ок?
— Отлично, тогда я расскажу тебе о вызове функций/методов и возвращаемых ими значениях.
— Команды группируют в функции, чтобы потом можно было исполнять их единым блоком – как одну сложную команду. Для этого надо написать имя функции(метода) и в скобках после него перечислить значения-параметры.
— В примере выше мы написали функцию, которая выводит на экран переданную строку 4 раза. Затем мы вызвали функцию print4 в строке номер 6.
— Когда программа дойдет до выполнения строчки 6, она перескачет на строчку 9 – переменной s будет присвоено значение “I like to move it, move it.”
— Затем будут выполнены строки 11-14, и, наконец, функция завершится и программа продолжит работу со строчки номер 7.
— В функцию можно не только передавать аргументы (параметры), функция еще может возвращать результат(значение) своей работы. Это делается с помощью ключевого слова return. Вот как это выглядит:
— Похоже, начинаю понимать. Слева и справа написан один и тот же код. Просто слева он вынесен в отдельную функцию.
— Функция вычисляет какое-то значение и отдает его тем, кто ее вызвал с помощью команды return. По крайней мере, мне так кажется.
— А что еще за тип void такой?
— Некоторые функции просто что-то делают, но никаких значений не вычисляют и не возвращают, как наш метод main(), например. Для них придуман специальный тип результата – void – пустой тип.
— А почему нельзя было просто ничего не указывать, раз функция ничего не возвращает?
— Вспомни, как объявляется любая переменная – «тип и имя». А функция – «тип, имя и круглые скобки». А имя функции и затем круглые скобки – это вызов функции!
— Т.е. было проще придумать «пустой тип», чем разделять функции на две категории – возвращающие значение и не возвращающие значение?
— Именно! Ты отлично соображаешь, мой мальчик.
— А как возвращать пустой тип?
— Никак. Вот как все это работает: когда Java-машина выполняет команду return, она вычисляет значение выражения, стоящего справа от слова return, сохраняет это значение в специальной части памяти и тут же завершает работу функции. А сохранённое значение использует как результат вызова функции в том месте, где её вызвали. Ты можешь увидеть это на примере вверху.
— Ты говоришь про то место, где int m = min(a,b) трансформировалось в m=m2?
— Да. После вызова функции всё продолжает работать так, как будто вместо неё на этом же месте был написан её результат. Прочитай эту фразу еще раз и посмотри на код последнего примера.
— По-моему это только кажется лёгким, а на самом деле – сложно. Я только чуть-чуть чего-то понял и всё.
— Ничего. С первого раза можно понять только то, что уже знаешь. Чем больше не понятно, тем сильнее ты влез в новую для тебя область. И тем круче будет результат. Со временем всё прояснится.
— Ну, если ты так говоришь, тогда поехали дальше.
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 из метода, который не возвращает никакого значения.
Здравствуйте! Простите за реально глупой вопрос, но никак не могу понять смысла этой операции возвращения?
Зачем нужен return? Куда это возвращается? Зачем вообще нужно возвращение?
Не могли бы вы привести какой-то очень простой деревенский пример?
Прошу вас помогите!
В общем-то она и предназначена для возврата данных. Они сначала обрабатываются, а после операции возвращаются другому методу, который их может запрашивать.
public String whatIsYourName()<
name = «Vasya»;
return name;
>
Кусочек из программы выше делает следующее. Есть переменная name без значения. Ты вызываешь метод whatIsYourName и вуаля, переменной назначается новое значение «Vasya». В итоге, возвращается имя. Кому? Тому, кто его запросил. Конечно же, вместо простого присваивания имени «Вася» может происходить сложный процесс. Например, имя будет искаться в списке по определённым критериям и тд. А в результате то, что было найдено, возвращается кому-то.
На самом деле это трудно объяснить, тебе нужно прочувствовать. Можно сравнить с записью диска. Был у тебя перезаписываемый диск, дал ты его другу, чтобы он записал тебе фильмы. Он записал фильмы и ВЕРНУЛ диск. Тоже самое и в программе. Ты хочешь поработать над переменными, даёшь их методу, а он над ними что-то творит и возвращает новое значение после обработки.
return 2;
>
переменная = функция ().
В переменную занесется значение два.
То есть после выполнения, вместо функции подставится значение, которое стоит в return
есть два варианта использования этого return
1) возвратный метод т е метод выполняет блок и возвращает значение (в любом случае что-то возвратит 😉 вопрос только в том то что нужно или то что есть )
Пример:
String getText(int index)
<
return «Hello World».substring(index);
>
MnogoBlog
как создать сайт на wordpress, настроить и оптимизировать wordpress
Java Урок 19: КЛАСС, методы возвращающие значения
Рассмотрим методы, возвращающие значения.
Скачать исходники для статьи можно ниже
Хотя реализация метода volume() переносит вычисление объема параллелепипеда внутри класса Box, которому принадлежит этот метод, такой способ вычисления не является наилучшим. Например, что делать, если другой части программы требуется знание объема параллелепипеда без его отображения? Более рациональный способ реализации метода volume() — вычисление объема параллелепипеда и возврат результата вызывающему объекту. Следующий пример — усовершенствованная
версия предыдущей программы — выполняет именно эту задачу.
Как видите, вызов метода volume() выполняется в правой части оператора
присваивания. Правой частью этого оператора является переменная, в данном случае vol, которая будет принимать значение, возвращенное методом volume().
Таким образом, после выполнения оператора
метод myboxl.volume() возвратит значение 3000, и этот объем cохраняется в переменной vol.
При работе с возвращаемыми значениями следует учитывать два важных обстоятельства.
• Тип данных, возвращаемых методом, должен быть совместим с возвращаемым типом, указанным методом. Например, если возвращаемым типом какого-либо метода является boolean, нельзя возвращать целочисленное значение.
• Переменная, принимающая возвращенное методом значение (такая, как vol), также должна быть совместима с возвращаемым типом, указанным для метода.
И еще один нюанс: предыдущую программу можно было бы записать в несколько более эффективной форме, поскольку в действительности переменная vol совершенно не нужна.
Обращение к методу volume() можно было бы использовать в вызове метода println() непосредственно, как в следующей строке кода.