11.03.2014 / 17:33 | |
Salat-Cx65 Пользователь Сейчас: Offline
Имя: Сергей Откуда: Кременчуг Регистрация: 23.03.2010
| usb_device (11.03.2014/17:21) Кажется я понимаю в чем дело, если не ошибаюсь, то когда на один обьект ссылается несколько ссылок, то он будет существовать вплодь до того пока на него ссылается хотя бы одна из ссылок. Когда мы пишеФункцию оператора '=' в Яве знаешь? Из книг не перестаю советовать "Философия Явы" Эккеля
Изменено Salat-Cx65 (11.03 / 17:35) (всего 1 раз) |
11.03.2014 / 17:36 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| Salat-Cx65, присваивает одному обьекту ссылку на другой. Например Game gam = new Game(); Game gam2=gam. Теперь они оба ссылаются на один обьект.
|
11.03.2014 / 17:37 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| usb_device, прочитал только что в книге про яву 7 что ссылка указывает на экземпляр обьекта, если обьект изменяется, то и ссылка указывает на измененный обьект, на одно и тоже место в памяти, так что ссылка не теряется. Пробуй, если что не понятно-спрашивай.
Изменено samodelkin (11.03 / 17:39) (всего 3 раза) |
11.03.2014 / 19:50 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| samodelkin, да пофиг не то, теряется ссылка. У меня есть класс в котором есть метод, этот метод принимает на вход массив, и присваивает етот массив своему массиву. Что то вроде потом есть метод отрисовки, он работает с этой же ссылкой на тот переданный массив. Так вот если там в коде игры массив не пересоздавать а очищать то все норм. А если пересоздавать то игра будет постоянно отображать состояние массива до пересоздания.
|
11.03.2014 / 19:53 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| но если например постоянно обновлять ссылку на массив в игровом цыкле то все норм. Типа так drawMap.setMapArrayLink(snake.map)
|
11.03.2014 / 20:16 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| usb_device, ааа, ясно. Значит ссылка при пересоздании теряется и ее надо обновлять.
Изменено samodelkin (11.03 / 20:24) (всего 1 раз) |
11.03.2014 / 20:28 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| samodelkin, public static void main(String[] args) { int[] array=new int[5]; int[] arrayClone; array[2]=5; System.out.println(array[2]); arrayClone=array; System.out.println(arrayClone[2]); array=new int[5]; array[2]=1; System.out.println(arrayClone[2]); } вот демонстрация этого. В консоль выведет 5 5 5, хотя должно вывести 5 5 1 если бы ссылка не терялась.
|
11.03.2014 / 20:40 | |
Salat-Cx65 Пользователь Сейчас: Offline
Имя: Сергей Откуда: Кременчуг Регистрация: 23.03.2010
| usb_device, Как я понимаю беда была в разнице ПРИСВАИВАНИЯ обьекта и КОПИРОВАНИЯ объекта.
|
11.03.2014 / 20:45 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| Salat-Cx65, ну у меня как раз таки было присваивание, обьект методом clone() я не копировал, если ты об этом.
|
11.03.2014 / 20:54 | |
usb_device Пользователь Сейчас: Offline
Имя: Денис Откуда: USB Регистрация: 07.01.2013
| кстати, если сделать так array=null; это значит что массив полностью удалиться, как ссылка на память, так и данные в памяти?
|