February 24th, 2009
« Microsoft викинула Java з Windows XP |
Parlez-vous Java »
Через те, що об’єктні змінні є посилальними, при привласненні не відбувається копіювання об’єкту. Так, якщо написати
Foo foo, bar;
.
bar = foo;
те відбудеться копіювання адреси із змінній foo в змінну bar. Тобто foo і bar указуватимуть на одну і ту ж область пам’яті, тобто на один і той же об’єкт; спроба змінити поля об’єкту, на який посилається змінна foo, мінятиме об’єкт, з яким пов′язана змінна bar, і навпаки.
Якщо ж необхідно отримати саме ще одну копію початкового об’єкту, користуються або методом (функцією-членом, в термінології C++) clone(), що створює копію об’єкту, або ж копіюючим конструктором.
Метод clone() вимагає, щоб клас реалізовував інтерфейс Cloneable (про інтерфейси див. нижче). Якщо клас реалізує інтерфейс Cloneable, за умовчанням clone() копіює всі поля ( дрібна копія ). Якщо потрібно не копіювати, а клонувати поля (а також їх поля і так далі), треба перевизначати метод clone().
Визначення і використання методу clone() часто є нетривіальним завданням [1].
Збірка сміття
В мові Java неможливе явне видалення об’єкту з пам’яті - натомість реалізована збірка сміття. Традиційним прийомом, що дає складальникові сміття «натяк» на звільнення пам’яті, є привласнення змінної порожнього значення null. Це, проте, не означає, що об’єкт, замінений значенням null, буде неодмінний і негайно видалений.
Даний прийом всього лише усуває посилання на об’єкт, тобто відв′язує покажчик від об’єкту в пам’яті. При цьому слід враховувати, що об’єкт не буде видалений складальником сміття, поки на нього указує хоч би одне посилання з використовуваних змінних або об’єктів.
Існують також методи для ініціації примусової збірки сміття, але не гарантується, що вони будуть викликані виконуючим середовищем, і їх не рекомендується використовувати для звичайної роботи.
Класи і функції
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13
Tags:
інтерфейс,
клас,
код,
метод,
мова,
обєкт,
тип
Схожі записи
- Мова і архітектура Java (28.03.2009)
... Результатно як мова планувалося використання мови програмування С++, але поступово пов'язані з ним труднощі привели до необхідності створення нової мови.
Система повинна була увібрати в себе кращі риси з безлічі сучасних систем програмування -- Eiffel, Smalltalk, Objective C, Cedar/Mesa і т. д..
Стрімке зростання мережевих технологій привело до необхідності нового погляду на процес створення і ...
- Parlez-vous Java (25.02.2009)
... та просто на вивчення незнайомої розмовної мови! Нічого нового тут не немає, але про що, наскільки я знаю, ніколи не згадувалося, так це про те, що схожість набагато більша, ніж просто синтаксична аналогія. Можна також провести і культурні паралелі.
Для масштабного мислителя вивчення культури мови Java (хто його використовує і чому, які його філософські і ...
- Програмування на мові Java Обробка виключень (06.03.2009)
... Схема роботи цього механізму наступна. Ви намагаєтеся (try) виконати блок коду, і якщо при цьому виникає помилка, система порушує (throw) виключення, яке залежно від його типу ви можете перехопити (catch) або передати замовчуваному (finally) обробникові.
Нижче приведена загальна форма блоку обробки виключень. try { // блок коду } catch (ТипИсключения1 е) { ...
- Як починалася революція Інтернет частина 1 (26.03.2009)
...
Спостерігаючи за сьогоднішнім ажіотажем навколо Java, цікаво
дивитися у вчорашній день, щоб зрозуміти, що ж треба робити
щоб досягти такого ефекту. Взагалі кажучи, історія Java стала
одній з красивих казок комп'ютерного миру.
2. НАРОДЖЕННЯ WWW
Кажучи про історію проекту Java, треба б починати звідки-небудь
з давнього Єгипту, але тоді розповідь була б дуже ...
- Теорія і практика Java Коротка історія розвитку технології утилізації памяті (19.03.2009)
...
Добре відомі проблеми з повислими покажчиками і витоками пам'яті просто не зустрічаються в програмах Java (у них зустрічаються один з видів витоку пам'яті, який точніше називається мимовільне запам'ятовування об'єкту, але це дещо інша проблема).
Проте збірка сміття має і свої витрати, серед яких негативний вплив на продуктивність, паузи, складна конфігурація і недетерміноване завершення процедур.
...
Категория:
Загальна інформація |
Комментарии