Каким образом передается в метод массив ? По ссылке или по значению? Если объект массив видоизменяется после вызова метода, получается по ссылке. Но элементы - примитивы. Так как же происходит на самом деле?
Алексей
16 уровень
Каким образом передается в метод массив ?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
5 апреля 2020, 18:04
Вот у тебя дом, только построенный, в нём квартиры. Ты бригаде штукатуров (метод, который штукатурит) передаёшь адрес дома. Они едут по адресу и штукатурят квартиры. Новый дом специально под бригаду штукатуров естественно не создаётся, отштукатурить надо именно этот.
На что Александр ниже указывает - это надо пояснить. когда вызывается метод, в задачу которого входит изменение аррэя, то, естественно, он этот аррэй и должен изменять (штукатурить квартиры). Если же вызываемый метод не подразумевает изменений (например, найти максимальное число в аррэе), то метод ни в коем случае не должен переданный ему по ссылке массив изменять.
+1
Wladyslaw Java Developer Master
5 апреля 2020, 17:49
Ссылка передается по значению. То есть, в фрейме стека вызова метода ссылка у него будет своя - но ссылаться будет на тот же объект, на которую ссылается та ссылка, которую ты передал параметром в метод.
Меняешь объект по ссылке в скоупе метода - объект меняется. Меняешь локальную ссылку в скоупе метода - ссылка, которую передавал как параметр не меняется.
0
Александр
5 апреля 2020, 17:06
вообще-то какое отношение имеет одно к другому? если метод изменяет данные в массиве - он измениться, будь там ссылки на объекты или примитивы. Другое дело, что это дурной тон изменять входящие параметры в методах. Создают обычно новый массив и его отдают
0