Поиск…


Создание экземпляра ссылочного типа

Object obj = new Object(); // Note the 'new' keyword

Куда:

  • Object является ссылочным типом.
  • obj - это переменная, в которой сохраняется новая ссылка.
  • Object() - это вызов конструктора Object .

Что просходит:

  • Пространство в памяти выделяется для объекта.
  • Конструктор Object() вызывается для инициализации этого пространства памяти.
  • Адрес памяти сохраняется в obj , так что он ссылается на вновь созданный объект.

Это отличается от примитивов:

int i = 10;

Если фактическое значение 10 хранится в i .

Разыменование

Выделение происходит с помощью . оператор:

Object obj = new Object();
String text = obj.toString(); // 'obj' is dereferenced.

Выделение следует за адресом памяти, хранящимся в ссылке, до места в памяти, где находится фактический объект. Когда объект найден, запрашиваемый метод вызывается ( toString в этом случае).


Когда ссылка имеет значение null , разыменование приводит к исключению NullPointerException :

Object obj = null;
obj.toString(); // Throws a NullpointerException when this statement is executed.

null указывает на отсутствие значения, то есть после адреса памяти нигде не происходит. Таким образом, нет объекта, на который может быть вызван запрошенный метод.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow