![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Объясните не понятное поведение с Java работаю не долго и возможно это баян, но все же. В Java все аргументы передаются по ссылке тогда внимание почему такое поведение, код ниже.
|
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Вот и нет. По значению они передаются. В других языках, например, в C# для этого есть аргументы ref и out - но в джаве их нет. Это сообщение отредактировал(а) Stolzen - 12.10.2011, 17:27 |
|||
|
||||
| Nofate |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
@lamber: Просто объекты являются ссылками, а ссылки переданные по значению остаются ссылками на то же место. Вот и кажется, что передача идет по ссылке.
То есть в ваших методах вы работаете скопией ссылки на объект. Когда вы делаете DimArr = null, вы просто обнуляете вашу ссылку DimArr, сам объект это разумеется никак не затрагивает. То же самое относится и к другим присвоениям параметра внутри метода. Это сообщение отредактировал(а) Nofate - 12.10.2011, 17:36 -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
|||
|
||||
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2Nofate и 2Stolzen
Как же тогда выходит что изменяя значения внутри массива эти изменения сохраняются т.е. в том случае когда я пытаюсь изменить значение элементов массива все окей, но стоит мне попробовать изменить размерность массива как выходит что тут же я работаю с копией. |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Очень просто. Когда ты передаёшь объектную ссылку методу сама ссылка передаётся по значению. Но, т.к. передаваемое значение ссылается на объект, копия этого значения будет ссылаться на тот же объект, что и аргумент. |
|||
|
||||
| Nofate |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
Рассмотрим пошагово
Случай 1.
Случай 2.
Надеюсь, стало понятнее. -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
||||
|
|||||
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Господа спасибо за детальный разбор можно закрывать.
|
|||
|
||||
![]()
|
| Правила форума "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. |