Вниз  Android-программирование (1-ые посты)
- 11.03.2014 / 16:57
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Вот не помню где, но писалось что если переменная массива обьявлена вне всех методов класса, а присвоение ей массива нужного размера происходит уже внутри метода какого нибудь, ява не может гарантировать заполнение всех ячеек нулями. Хотя я может быстро читая не понял что имелось ввиду, но думаю именно то что я написал.
- 11.03.2014 / 17:12
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Все таки при пересоздании массива ссылка на него изменяется. У меня есть метод, в котором при инициализации, его перменной массива присваивается ссылка на массив-карту игры. Потом этот метод отрисовывает карту на основе массива по этой ссылке. Так вот если массив снова создать array=new int[10][10] даже такого же размера, то метод продолжит отрисовывать старую карту. Выходит где то в памяти еще остается массив с таким же названием, например array, и с него метод и рисует.

Изменено usb_device (11.03 / 17:18) (всего 1 раз)
- 11.03.2014 / 17:20
Salat-Cx65
  Пользователь

Salat-Cx65 
Сейчас: Offline
usb_device, Volatile для этого придуман + надо код смотреть, возможно там объект класса виноват и т.п. Короче это гадание на кофейной гуще
- 11.03.2014 / 17:21
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Кажется я понимаю в чем дело, если не ошибаюсь, то когда на один обьект ссылается несколько ссылок, то он будет существовать вплодь до того пока на него ссылается хотя бы одна из ссылок. Когда мы пишем что то типа array = new int[10][10] мы по сути создаем новый обьект, а так как со старым обьектом связаны ссылки, то для новосозданного обьекта созадеться новая ссылка.
- 11.03.2014 / 17:25
usb_device
  Пользователь

usb_device 
Сейчас: Offline
В принципе я сделал уже новый метод который из принятого по ссылке массива извлекает данные в новый массив. Но так в памяти будут постоянно уже два массива висеть - один тот с которым взаимодействует игра, и тот который на основе которого рисуется карта. Хотя можно конечно рисовать карту по прямому извлечению значений из массива игры, но хочется отделить код рисования от кода игры) По сути классу рисования нужен только входной массив для отрисовки.
- 11.03.2014 / 17:26
usb_device
  Пользователь

usb_device 
Сейчас: Offline
я так понял, применив volatile к массиву который будет постоянно изменяеться, ссылка не него не измениться?
- 11.03.2014 / 17:27
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
HoldFast (11.03.2014/16:48)samodelkin, М-да, ну ты насоветуешь  :-D я директор корпорации "самодроид", наверно создание игр забило мне голову.
- 11.03.2014 / 17:29
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
usb_device, мне кажется ответ на этот вопрос можно найти в любом учебнике по яве.
- 11.03.2014 / 17:31
usb_device
  Пользователь

usb_device 
Сейчас: Offline
нашел кстати быстрый способ заполнения многомерного массива Arrays.fill(array[i],value). Вообще вижу лучше не делать в программе связь по ссылкам, да бы потом не искать где же там обьект в оперативе висит.
- 11.03.2014 / 17:32
usb_device
  Пользователь

usb_device 
Сейчас: Offline
samodelkin, у меня из таких "учебников" Герберт Шилдт 2012года. Книгу хвалят, но почему то такие моменты не особо рассмотренные, в частности с массивами.
Наверх  Всего сообщений: 4453
Фильтровать сообщения
Поиск по теме
Файлы топика (184)