Java return не работает

Как использовать return в java?

Вот вроде понимаю что return что-то возвращает, завершает процессы метода (функции), но что, как он это делает вообще, не понимаю. Пересмотрел кучу статей, видио по этому поводу, всё равно не понимаю.

Если не сложно приведите пример чтобы понял, заранее спасибо.

2 ответа 2

Каждый метод — это кусок последовательно выполняющегося кода.

Каждый метод в своей сигнатуре (определении) имеет указание на тип возвращаемого значения.

Каждый метод всегда заканчивается вызовом return . В случае если метод возвращаемым значением имеет void (не путать с Void ) то ключевое слово return можно (и нужно) опустить. Пример:

Также return в этих методах можно использовать для логических целей. Например не выполнять код методе, если какие-то условия не выполнились

Если возвращаемое значение метода не void то метод обязан вызвать return и вернуть значение указанного типа. Его можно использовать для назначения к-л переменно или иначе использовать Пример:

В последнем случае результат работы метода будет присвоен переменной i

Не могу говорить совершенно точно про java, но думаю, что там все работает также, как и в C\С++.

Если я правильно понял вопрос — отвечаю:

При вызове функции происходит смена контекста выполняемой программы — все значимые регистры и локальные переменные, а также регистр связи сохраняются в стек, а в регистры, предназначенные под передачу параметров (а если их много — для этого тоже используется стек) записываются передаваемые параметры.

Когда выполняется строка return result — в регистры, предназначенные для возврата результата выполнения функции, помещается её результат.

В случае, если результат не помещается в эти регистры — он помещается в стек, а в регистр заносится адрес возвращаемого значения в стеке.

Кроме того, после завершения функции должен быть восстановлен контекст.

А более подробно на эту тему советую почитать «Соглашение о вызовах» целевой платформы.

Источник

Почему не работает return в java?

Не работает return в методе say() (class Pet), когда вызываю из супер класса, такая же ситуация когда из мейна вызываю метод say()(class Fish) здесь я пытался переопределить метод say () из класса Pet.

Вызываю в мейне:

  • Вопрос задан более года назад
  • 216 просмотров

JavaStud, нет, в книге (третье издание, стр. 50) написано так:

petReaction = myPet.say(«Чик!! Чирик!!»);
System.out.println(petReaction);

Нет, я на странице 56 «Переопределение методов»

а потом вызывают метод say из метода main:

Bavashi, ну так я понимаю. Но в книге которую я скачал, не расписано так детально как в оригинале. В моей книге написано так: (привожу пример ниже).Поэтому я решил что можно обойтись без System.out.println().
P.S. Книга отличная,переиздание плохое.

Читайте также:  Ваз 2107 не работает зажигание не загорается даже панель

Я на странице 56 «Переопределение методов»

а потом вызывают метод say из метода main:

Bavashi, дело в том, что мозг новичка так не работает. Он повторяет то, что ему сказали, так как сказали. Поэтому он может легко зайти в тупик если хоть где-то «ниточка» рвется. Опытному, конечно, не составит проблем сопоставить новую и уже имеющуюся информацию. Он уже умеет оперировать знаниями.

А книга бесспорно замечательная, хорошие, доступные примеры. Но связность подачи информации в обсуждаемом месте книги действительно просела, в плане консистентного пошагового инструктажа.

Источник

Почему не работает return в java?

Не работает return в методе say() (class Pet), когда вызываю из супер класса, такая же ситуация когда из мейна вызываю метод say()(class Fish) здесь я пытался переопределить метод say () из класса Pet.

Вызываю в мейне:

  • Вопрос задан более года назад
  • 216 просмотров

JavaStud, нет, в книге (третье издание, стр. 50) написано так:

petReaction = myPet.say(«Чик!! Чирик!!»);
System.out.println(petReaction);

Нет, я на странице 56 «Переопределение методов»

а потом вызывают метод say из метода main:

Bavashi, ну так я понимаю. Но в книге которую я скачал, не расписано так детально как в оригинале. В моей книге написано так: (привожу пример ниже).Поэтому я решил что можно обойтись без System.out.println().
P.S. Книга отличная,переиздание плохое.

Я на странице 56 «Переопределение методов»

а потом вызывают метод say из метода main:

Bavashi, дело в том, что мозг новичка так не работает. Он повторяет то, что ему сказали, так как сказали. Поэтому он может легко зайти в тупик если хоть где-то «ниточка» рвется. Опытному, конечно, не составит проблем сопоставить новую и уже имеющуюся информацию. Он уже умеет оперировать знаниями.

А книга бесспорно замечательная, хорошие, доступные примеры. Но связность подачи информации в обсуждаемом месте книги действительно просела, в плане консистентного пошагового инструктажа.

Источник

Java: Возврат значений

В модуле «Вызов методов» мы в основном работали с методами, которые возвращают результат, а не выводят его на экран. Честно говоря, вывод на экран — фактически обучающий элемент. В реальном коде на экран никто ничего не выводит (за исключением утилит командной строки). Методы возвращают данные, которые потребляются другими методами.

И только в конечном счете что-то выводится на экран, а иногда и ничего, ведь приложение Java может просто отвечать на запрос, который к нему делает какое-то другое приложение, и результат выполнения запроса тоже каким-то способом возвращать этому приложению, а уже оно будет его показывать на экране.

Читайте также:  Виртуальная память windows 10 как настроить для 4гб озу

Научиться писать методы, которые возвращают информацию — первый шаг на пути к построению по-настоящему полезных программ.

Начнем с тривиального примера: создадим и вызовем метод, который принимает два числа и возвращает разность первого и второго. Назовём его sub() , от англ. subtract — «вычесть»:

Обратите внимание: мы знаем, что вызов метода — выражение, поэтому мы передали вызов одного метода в вызов другого — System.out.println(sub(10, 7)) .

Возврат задаётся специальной инструкцией return . Cправа от return помещается выражение. Любое выражение. То есть, мы можем делать вычисления сразу после return без создания переменной result :

Задание

Сэм создаёт генеалогические деревья разных семей. Ему постоянно приходится рассчитывать количество места, занимаемое именами родителей на экране.

Создайте метод getParentNamesTotalLength() для Сэма. Он должен принимать один аргумент — имя ребенка, и возвращать количество символов в именах матери и отца суммарно. Метод не должен выводить ничего на экран, только возвращать число.

Для реализации используйте уже существующий метод Functions.parentFor() :

  • Получение имени матери Functions.parentFor(child, «mother») , где child — имя ребёнка.
  • Получение имени отца Functions.parentFor(child, «father») , где child — имя ребёнка
  • Длину строки str можно получить таким образом: str.length() — это особый способ вызова метода, который мы подробно пока изучать не будем

Вам не нужно вызывать свой метод, только определить его.

Как обычно, метод нужно сделать public static , а не просто static , чтобы мы смогли вызвать его из другого класса.

Источник

вернуть ключевое слово в Java

return — это зарезервированное ключевое слово в Java, т. е. мы не можем использовать его в качестве идентификатора. Он используется для выхода из метода со значением или без него.
return можно использовать с методами двумя способами:

  1. Методы, возвращающие значение: Для методов, которые определяют тип возвращаемого значения, за оператором возврата должно немедленно следовать возвращаемое значение.

// Java-программа для иллюстрации использования
// возвращаемого ключевого слова

// Поскольку возвращаемый тип метода RR — double

// поэтому этот метод должен возвращать двойное значение

double RR( double a, double b)

// возвращаем оператор ниже:

public static void main(String[] args)

System.out.println( new A().RR( 5.5 , 6.5 ));

Ход программы : когда мы вызываем метод RR класса, который имеет возвращаемую сумму, которая возвращает значение суммы, и это значение отображается на консоли.

Методы, не возвращающие значение: для методов, которые не возвращают значение, оператор return может быть пропущен.

    Пример 1: Метод НЕ использует инструкцию return в функции void:
Читайте также:  Как настроить комп чтобы быстрее работал

// Java-программа для иллюстрации возврата
// ключевое слово внутри метода void

// Поскольку возвращаемый тип метода RR

// void, поэтому этот метод не должен возвращать никакого значения

void RR( int a, int b)

// нет возврата в этом методе

public static void main(String[] args)

Пример 2: Методы с типом возврата void: оператор возврата не требуется ( но может использоваться ) для методов с типом возврата void. Мы можем использовать «возврат», что означает « ничего не возвращать» .

// Java-программа для иллюстрации использования
// возвращаем ключевое слово в метод void

// Поскольку возвращаемый тип метода RR

// void, поэтому этот метод не должен возвращать никакого значения

void RR( double j)

// возвращаем оператор ниже (только используя

// возвращаем оператор и не возвращаем

// управление выходит из метода, если это

public static void main(String[] args)

System.out.println( «In main» );

Ход выполнения программы : если утверждение if (j

// Java-программа для иллюстрации этого возврата
// не должно быть последним утверждением,
// но должен быть последним оператором в методе для выполнения

// Поскольку возвращаемый тип метода RR недействителен

// поэтому этот метод не должен возвращать никакого значения

void RR( double i)

// см. здесь возвращение не обязательно должно быть последним

// утверждение, но должно быть последним утверждением

// в методе для выполнения

public static void main(String[] args)

System.out.println( «In main» );

Поток : Когда условие (i

// Java-программа для иллюстрации использования
// оператор после оператора возврата

// Поскольку возвращаемый тип метода RR недействителен

// поэтому этот метод должен возвращать любое значение

void RR( double j)

// здесь получаем ошибку компиляции, так как не могу

// написать любое заявление после возврата ключевого слова

public static void main(String[] args)

Еще один пример

// Java-программа для иллюстрации использования
// возвращаемого ключевого слова

// Поскольку возвращаемый тип метода RR

// void, поэтому этот метод не должен возвращать никакого значения

void oshea( double val)

// если мы раскомментируем ниже, получим компиляцию

// ошибка, потому что после возврата не может написать

public static void main(String[] args)

System.out.println( «In main» );

Эта статья предоставлена Раджатом Раватом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Источник

Оцените статью