![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Инициализация членов класса
Локальные переменные не инициализируются по умолчанию.
Примитивные типы –инициализируются нулями. Ссылочные значения поля класса инициализируются – null. Инициализировать поля можно: 1) явно
public class Init { byte b = 47; char ch = ‘x’; Depth d = new Depth (); }
2) инициализация конструктором
public class Counter { int i; Counter () {i=7; } } … new Counter (); // в этот момент i получит 7, но перед этим i=0.
Порядок инициализации
Переменные-поля при явной инициализации инициализируются до вызова любого метода -даже конструктора (несмотря на порядок описания внутри класса). Очередность инициализации определяется порядком следования переменных-полей внутри класса. Статические данные инициализируются при необходимости: 1) при создании первого объекта; 2) при первом обращении к статическим данным класса
Процесс создания объекта(класс Dog)
1) Конструктор является статическим методом. При создании первого объекта типа Dog или при первом вызове статического метода или обращения к статическому полю класса Dog интерпретатор Java находит класс Dog.class. Поиск в каталогах CLASSPATH. 2) Загружается Dog.class (с созданием объекта Class) и производится инициализация статических элементов (только один раз, при первой загрузке). 3) Создается новый объект new Dog () - выделяется область памяти для объекта Dog в Heap. 4) Выделенная область памяти заполняется нулями. 5) Инициализируются поля. 6) Выполняются конструкторы.
|