2010-09-07 3 views
6

В чем разница между передачей по ссылке и вызовом по ссылке в java?В чем разница между передачей по ссылке и вызовом по ссылке?

+2

"Перевал" и "Вызов" разные вещи, а не разные версии одного и того же. Вы имели в виду «pass by reference» и «pass by value»? –

+2

@Jim Garrison - По-видимому, «Call by Reference» является синонимом для передачи по ссылке, или так говорит [Wikipedia] (http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference). –

+0

@ Рихард - Если вы сделаете этот ответ, я подниму его. – StriplingWarrior

ответ

9

Java не передает никаких переменных по ссылке.

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

На других языках передача по ссылке и обратная связь - это одно и то же.

Edit: Более подробная информация представлена ​​в существующем StackOverflow вопрос "Is Java pass by reference?" (Spoiler: №)

+0

Не передаются ли объекты по ссылке? –

+1

Технически они передаются по значению, но их значение является ссылкой. Если вы передали объект 'foo' в метод, а затем сказали 'foo = new Object()', переменная вызывающего метода, которая была передана в метод, осталась бы неизменной. – StriplingWarrior

+1

В java все передается по значению. перейдите по значению. перейдите по значению. Точно можно сказать, что ссылки java передаются по значению. Это означает, что если у вас есть ссылка на объект, a, и вы передаете эту ссылку на вызов метода, ссылка a будет скопирована в b. Теперь b и точка к одному и тому же объекту. – hvgotcodes

7

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

по следующим адресам Поясним это более подробно: http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html и http://javadude.com/articles/passbyvalue.htm?repost

Видимо (как отмечено в комментариях к вашему вопросу) термины «пройти по ссылке» и «вызов по ссылке» означает то же самое.

1

Вы спрашивали, но «передать по ссылке» и «позвонить по ссылке» - это то же самое.

Если вы ищете разницу между проходом по ссылке и пройти мимо контрольных ответов значения для

Pass by reference or pass by value?

Но помните, что Java передает параметр по значению.

http://javadude.com/articles/passbyvalue.htm

http://academic.regis.edu/dbahr/GeneralPages/IntroToProgramming/JavaPassByValue.htm

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