Я не уверен в определении декларации и инициализации. И когда устанавливается Инициализация значений по умолчанию.Java: создание объекта за 3 шага (декларация, распределение/инициализация, присвоение)
1) Например Декларация объектного скалистой (класс Dog):
Dog rocky;
Это создает только запись в стеке и нет ссылки?
.
2) Создание экземпляра собаки:
new Dog();
Распределение памяти в Heap, Значения по умолчанию Инициализация (переменная legs
к 0
), создать Reference.
Если у меня нет конструктора: компилятор создает конструктор по умолчанию. Он пуст? Конструктор и Значения по умолчанию инициализации должны быть разными коленкор и один из возможных Instance Initializer (следующий Instance Initializer Блок и Конструктора).
.
3) Назначение: положить ссылочное значение в стек?
rocky = new Dog();
Я прав?
Благодаря
Пример:
class Dog
{
int legs;
Dog()
{
System.out.println("constructor invoked");
}
}
public class Foo
{
public static void main(String[] args)
{
Dog rocky;
new Dog();
rocky = new Dog();
}
}