Подтвердить что ты не робот

Что делает JVM, когда "новый" оператор инициализирует память с помощью конструктора?

RealEstate v = new RealEstate();

Я использовал ключевое слово new с RealEstate(). Я знаю, что new выделяет память и инициализирует память с помощью конструктора класса RealEstate.

Что здесь делает JVM?

4b9b3361

Ответ 1

Оператор

new фактически не использует помощь конструктора для выделения памяти. Это не имеет никакого отношения к конструктору. В основном Java-версия malloc - new.

Оператор

new:

  • выделяет память для объекта
  • вызывает конструктор объектов
  • возвращает ссылку на эту память

Конструктор выполняется отдельно для выполнения любых операций во время инициализации, таких как выделение значений объектам и переменным. Если конструктор не определен, компилятор будет создавать конструктор по умолчанию и будет выделять значения по умолчанию:


В следующей таблице приведены значения по умолчанию для нескольких типов данных. источник

Data Type   Default Value (for fields)
byte            0
short           0
int             0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
String          null
any object      null
boolean         false

Итак, оператор new выделяет только память и возвращает ссылку на эту память.

См. документацию :

Новый оператор создает экземпляр класса, выделяя память для нового объекта и возвращая ссылку на эту память. Новый оператор также вызывает конструктор объекта.