Ссылка - это просто число, которое JVM использует для идентификации и определения местоположения объектов.Когда вы делаете
Emp e = new Emp();
new Emp();
, создаете экземпляр класса Emp
и возвращает ссылку на этот экземпляр - допустим, это 123
.Затем через Emp e =
этот идентификатор присваивается ссылочной переменной e
, поэтому он содержит 123.
Позже
lst[0] = e;
123
(ссылка) будет скопирован из e
в lst[0]
.
НО e
и lst[0]
являются отдельными переменными , даже если они содержат одинаковые значения .Изменение значения на одном из них (для хранения null
ссылки) не означает автоматического изменения значения на другом.
Другими словами, когда вы делаете lst[0] = e;
, это не означает, что lst[0]
сказано всегда использовать значение, хранящееся в e
, но для этого нужно взглянуть на текущее значение, удерживаемое e
, и скопировать это значение (один раз).Поэтому, когда вы позже измените значение, удерживаемое e
(даже на null
), оно не изменит то, что удерживает lst[0]
.