![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
ChessMaster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
Запутался с тем, как передать значение по сслыке, а как по значению.
Дело в том, что monkey != cageMonkey.get(0); То есть вклетки сидит мартышка с другой температурой. |
|||
|
||||
agR |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Честно говоря из примера мало что понятно. В Java параметры передаются по значению... для объектных переменных значениями являются ссылки. Попытался сделать, че-то по твоей идее, вот что получилось:
П.С. А ты код прям на форуме набирал? ![]() |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Объекты всегда передаются по ссылке, а примитивные типы по значению.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
agR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
LSD,
и
Как по мне, то те же грабли, тока в профиль. Читал книгу, так там акцент как раз и делался, что в java передается по значению... и утверждение "по ссылке" - ошибочно. Кому верить? ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Для объектов передается копия ссылки на этот объект. И мы можем в теле метода изменить переданную копию ссылки, присвоив ей другой объект.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
ChessMaster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
||||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Боюсь, LSD ввел в небольшое заблуждение. Изменение (переприсваивание) ссылки возымеет действие только в пределах метода. Ключевая фраза "передается копия ссылки на этот объект".
-------------------- ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Да, безусловно, только пример не отражает фразу
-------------------- ![]() |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
А как же это:
![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Да, сорри. Не заметил. Ну тогда будут выведены разные значения внутри и вне метода. Наверно LSD это и хотел продемонстрировать.
![]() -------------------- ![]() |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Нифига се профиль!!! ![]()
Если надо сугубо по значению - тогда clone() объекта и передача клона в качестве параметра. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ага ![]() Передать по значению нельзя, но можно это дело эмулировать клоном для изменяемых объектов, а для неизменяемых просто передавать как есть. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Fedrus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Как раз сегодня получил ошибку забыв про "передачу объектов по ссылке".
Я передал как new Object(myObject). В поисках более правильного решения погуглил и нашел интересную статью http://www.javable.com/columns/robinson/letters/01/ в ней как раз доказывается что в java
Потом залез на форум и нашел эту тему и окончательно запутался(LSD привык верить) и сегодня сильно не выспался чтоб полностью понять статью может посмотрите и всетаки дадите определенный ответ. Это сообщение отредактировал(а) Fedrus - 24.1.2008, 11:16 --------------------
Если вы идете через ад, идите не останавливаясь. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
По сути тут утверждается одно и то же. Для примитивных типов в стеке создаётся копия этой переменной. Для объекта - создаётся копия ссылки на этот объект.
Как это назвать, передачей копии ссылки, или передачей по значению, при условии что для объектных переменных значением является ссылка, вопрос вторичный. Просто классическая передача объекта по значению, подразумевает что создаётся копия этого объекта и именно она и передаётся. Поэтому я предпочитаю говорить, что передаётся копия ссылки. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |