Сокурсники!
Подскажите пожалуйста, наткнулась тут на интересный комментарий от автора статьи.
Вопрос: В чем особенность инициализации локальных переменных? Ответ: Локальные переменные не инициализируются автоматически пустым значением null. Локальную переменную необходимо явно инициализировать с помощью оператора new или присвоив ей пустое значение null.Но вот тут есть такой момент:
На самом деле процесс инициализации проходит следующим образом:Проверила. Если не присваивать значение, то инициализируются действительно null-ом или значением по умолчанию для примитивных типов. Что имел ввиду автор? Или это ошибка?У происходящего есть и положительная сторона — по крайней мере, данные инициализируются нулями (или тем, что понимается под нулевым значением для определенного типа данных), а не случайным «мусором» в памяти. Это относится и к ссылкам на объекты, внедренные в класс с помощью композиции. Они принимают особое значение null.
- Память, выделенная под новый объект, заполняется двоичными нулями.
- Конструкторы базовых классов вызываются в описанном ранее порядке. В этот момент вызывается переопределенный метод draw() (да, перед вызовом конструктора класса RoundGlyph), где обнаруживается, что переменная radius равна нулю из-за первого этапа.
- Вызываются инициализаторы членов класса в порядке их определения.
- Исполняется тело конструктора производного класса.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ