2016-06-20 5 views
0

Я изучаю код на Java. Меня немного смущает «возвращение»; и что он делает, и когда мы его используем. Пожалуйста, смотрите следующий пример кода:В чем разница между функцией возврата и сохранением переменной?

public int something() { 
    return 1; 
} 

public static void main() { 
    int returnValue = something(); 
    System.out.println(returnValue); 
    //Prints 1 
} 

Почему бы нам просто хранить 1 в Int переменной называется то используйте System.out.print(something);

Когда мы используем метод возврата вместо того, чтобы просто хранить в переменной ?

Спасибо

+0

'add (1,2);' Как вы предлагаете получить значение 3 из этого метода без функции возврата? – Compass

+0

Что делать, если 'something()' делает что-то намного сложнее, чем просто 'return 1'? Вы не можете просто назначить '1', так как вы не знаете,' 1' - это то, что вы хотите вернуть, пока не выполните всю работу. – azurefrog

+0

Если у вас есть много вариантов возврата из «something()», ваша переменная не может хранить только значение 1, если это даже не переменная, это константа. – GuiDupas

ответ

3

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

Это относится к алгоритмам, которые делят работу на более мелкие куски и вызывают на меньшие куски (а затем объединяют индивидуальный результат с большим результатом). Это очень часто встречается в алгоритмах сортировки. Технический термин: рекурсия.

Обычно компилятор фактически делает именно это; создает переменную для хранения значения, из которого код вызова может поднять его. Эта переменная обычно помещается в одно и то же место - стек - как параметры, переданные вызываемому методу и невидимые для вашего кода.

(Также необходимо сделать его потоковым, что необходимо для использования более чем одного ядра на современном процессоре).

+0

Это объясняет это отлично, спасибо! –

Смежные вопросы