Почему значение поля экземпляра становится нулевым?

У меня есть этот простой кусок кода.

abstract class X {
    X() {
        read();
    }

    private void read() {
        Object obj = new Object();
        readValue(obj);
    }
    protected abstract void readValue(Object obj);
}

class Y extends X {

    Object obj = null;
    Y() {
        super();
    }

    @Override
    protected void readValue(Object obj) {
        this.obj = obj;
    }

    void printer() {
        System.out.println("Object = " + obj);
    }
}

class Runner {
    public static void main(String[] args) {
        Y y = new Y();
        y.printer();
    }
}

Когда я запускаю приведенный выше код, объект печатается как ноль. (Я получил"Объект = ноль")
Удивительно, но в классе Y, когда я удаляю нулевое объявление

Object obj;

Фактическая стоимость объекта печатается.
Что-то вроде ("Объект = java.lang.Object@3cd1a2f1")
Почему наблюдается такое поведение? На что указывает «это»? Любой объект инициализируется нулем, если мы просто объявляем его, тогда почему такое аберрантное поведение?

Ответы на вопрос(3)

Ваш ответ на вопрос