Ключевое слово void и возврат из функции

157
18 февраля 2019, 22:20

Хотел спросить, читаю в данный момент литературу по Java, но так и не понял почему void ничего не возвращает.

Например:

public void firstMethod(){
System.out.println("Hello!");
}

По сути, нам возвращается слово "Hello" как я понимаю.

Но забил в Intellij idea код:

public void run(){
   return 10;
 }

Идея начала ругаться, мол измените на public int run().

Не очень понял (ничего не возвращающий void), объясните пожалуйста.

Answer 1

Функция должна возвращать какою-то структуру при её вызове (или же ничего не возвращать). void - спецификатор, который указывает, что функция не должна ничего возвращать. Важно отметить, что под возвратом понимается return {...}, а не сама работа функции. Т.е. если у вас функции вида int Method(), то в самой функции обязательно должен присутствовать возврат return .

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

Answer 2

Имеется ввиду, что не возвращается никаких значений переменных. Соответственно тип возвращаемого значения не указывается и пишется void.

Answer 3

Когда вы вызываете какой-либо метод в коде, представляйте себе в уме вместо него то, что хотите от него получить. Что происходит в теле метода в это время нас не интересует: там может что-то печататься на консоль, могут создаваться какие-то объекты, могут даже вызываться другие методы или все сразу. Главное - это то, что он должен вернуть на свое место, когда его вызывают. Посмотрите на этот пример:

public static **int** sum(int a, int b) {
    return a + b;
}
int sumResult = sum(15, 23);

И на этот:

public static **void** sumAndPrint(int a, int b) {
    System.out.println(a + b);
}

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

READ ALSO
Как нарисовать квадратную спираль?

Как нарисовать квадратную спираль?

скажите пожалуйста, как можно нарисовать квадратную спираль ? Я сперва пробовал с помощью линий нарисовать, но не совсем получилось, может...

132
Не меняется значения переменной boolean

Не меняется значения переменной boolean

Решил написать блокнотикДошёл до функции

158
Метод matches строки

Метод matches строки

Есть строка из которой нужно выбрать все слова, которые начинаются с большой буквы и записать в новую строку, а с маленькой также в новую строкуПонимаю,...

169
Кодировки Java при работе с консолью

Кодировки Java при работе с консолью

Моя маленькая программа работает в консоли и читает данные из файла и показывает пользователю условно говоря и при соблюдении некоторых...

146