Основы Java. Урок 19: Передача аргументов по значению и по ссылке

preview_player
Показать описание
В данном уроке рассматривается передача аргумента (или параметра) по значению и по ссылке.
Рекомендации по теме
Комментарии
Автор

Думаю, что код следует писать по ходу объяснения, а не предоставлять его готовым заранее.
Так материал легче усваивается и не приходится пересматривать.

sergheiridico
Автор

Спасибо. Пришлось посмотреть 2 раза но со второго раза я все понял) Очень подробно разъясняете.

АртемАртемьев-фо
Автор

Вызовите мне врача. Кажется, у меня фляга свистанула

Vologdos
Автор

Копия ссылки передаётся. Как и все остальные переменные. Всё по значению. Всё копируется. Просто создаётся копия переменой, которая ссылается на какой-то объект. Ну а как известно, копия ссылки на объект будет ссылаться на тот же объект. Соответственно, если у этой переменной изменить значение поля (типа a.x = 1;), то у исходного объекта значение этого поля тоже изменится, и соответственно у всех ссылок на объект значения этого поля изменятся. Дальше если в методы инстанцировать новый объект, то копии ссылки присваивается новое место в памяти, т.к. копии мы присвоили другой объект, то А останется при своем старом объекте, а копии будет присвоен новый объект, новая облать памяти

БогданТкаченко-ыв
Автор

Немного путано получилось объяснение. Думаю, новичкам придётся попотеть, чтобы понять. 
Спасибо за вариант с "неизменяемым объектом", а вот, интересно для примитивных типов можно ли как-то так извернуться, чтобы с'имитировать передачу по ссылке?

OxygeniumH
Автор

java 2 основы стр 159. Кей Хорстман по значению, Переменные которые создаются в методах, находятся в стеке и по завершению, уничтожаются, т.е чтобы их от туда изменить нужен return?

maksimus.ssirotkin
Автор

Помогите, разобраться, пожалуйста.

public void process() {
int x = 22;
out.print(x + " ");
modify_x(x);
out.print(x+ " ");
}

public static void modify_x(int x) {
x= 99;
out.print( x + " ");
}

какой будет вывод, если параметр передается по значению? 22 22 22 ?

ivs_all
Автор

Последний метод
public static void new_Box(Box b){b=new Box(100);}
здесь не используется, а на практике его можно как нибудь применить?
P.S. спс за уроки.

nikolaygoltsov
Автор

отлично зашло, cпасибо, что каждый нюанс рассказали очень подробно, прям спасибо

gingerCatStore
Автор

в jave cслыку нельзя передать, а когда мы изменили состояние объекта ты использовали оператор (.) сслыки в методе переназначить нельзя в jave

maksimus.ssirotkin
Автор

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

eqweqrsfytwyr
Автор

Ошибка в коде !!! Метод new_Box(Box b), а вызываешь nev_Box(b); .... new != nev ... вот и косяк .. а ответ должен был быть 100 ...

ВиталийЧернышев-щн
Автор

ты хотел чему то других научить или просто рассказать? Просто у тебя получилось второе. Я ухожу ствоего видео без знаний зато потратил время

ПрикольчикиБлин