Будут ли изменения отражены в исходной переменной?

На следующем изображении p указывает на person,

p передается как ссылка на функцию с именем callFunction, Теперь, если я сделаю какие-либо изменения в p будут ли они также отражены в person? Пожалуйста, объясни.

Я понимаю, что переданный аргумент является ссылочным значением исходной переменной (я надеюсь, что так!). Но я не могу думать дальше.

3 ответа

Решение

Если вы измените детали p как таковой, это отразится

// Nothing done to p before this
p.changeName("Not Sanika Anymore"); // This will be reflected as both point to the same object as references are the same

Если вы создаете нового человека и назначаете его p тогда это не будет

// New Person for p
p = new Person("New Sanika"); // now this p is pointing to the newly created object's reference
p.changeName("Not Sanika Anymore"); // This won't be reflected

Это потому, что Java является просто передачей по значению. Вы передаете ссылку на объект в качестве значения callFunction(),

Этот ответ Eng.Fouad объясняет эту концепцию действительно хорошим способом.

Пока вы меняете members of the object на что указывает ссылка p, Они будут отражены, как Java передает параметр по значению.

Что такое Pass by value??

Фактический параметр (или выражение аргумента) полностью вычисляется, и результирующее значение копируется в местоположение, используемое для хранения значения формального параметра во время выполнения метода / функции. Это расположение обычно представляет собой кусок памяти в стеке времени выполнения для приложения (как это обрабатывает Java), но другие языки могут выбирать хранение параметров по-разному. Таким образом, у способа нет способа связаться с исходной ссылкой здесь.

Так Pass by reference реализован по-другому, это где на самом деле вы можете иметь свободу игры со ссылкой. Здесь ссылки могут быть изменены в методе.

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

Другие вопросы по тегам