Все объекты в Java доступны через их ссылки (в отличие от примитивного доступа!). Переменная bob
является ссылкой на экземпляр класса Person
. Распределение / удаление экземпляров памяти будет обрабатываться JVM, а данные экземпляра будут поддерживаться JVM до тех пор, пока существуют сильные ссылки на этот экземпляр (т. Е. Person bob = new ...
объявляет строгую ссылку на вновь созданный Person
экземпляр).
Объект Object создан, и его адрес памяти или тип ссылки отправляется Бобу, ссылочная переменная
Было бы правильнее сказать, что «Создан экземпляр объекта Person», но да, все переменные, используемые для объектов в Java, являются ссылочными переменными. Вызов new
вернет ссылку на созданный экземпляр. Может быть много ссылочных переменных, которые указывают на один экземпляр. Например, в следующем фрагменте кода мы можем иметь две ссылки, указывающие на один экземпляр:
Person bob = new Person("Bob W.", 30);
Person bob2 = bob;
Далее, когда мы вызываем «Bob.name», JVM смотрит на «адрес», который хранится у Боба, и отправляется туда, чтобы посмотреть на объект Person.
Точно. После того, как код скомпилирован, байт-код JVM будет использовать инструкцию getfield
для доступа к полю name
. Эта инструкция требует ссылку на объект и ссылку на поле. В этом случае bob.name
будет использовать bob
в качестве objectref
и Person#name
в качестве fieldref
.