Что делает JVM, когда "новый" оператор инициализирует память с помощью конструктора?
RealEstate v = new RealEstate();
Я использовал ключевое слово new с RealEstate(). Я знаю, что new выделяет память и инициализирует память с помощью конструктора класса RealEstate.
Что здесь делает JVM?
Ответ 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 выделяет только память и возвращает ссылку на эту память.
См. документацию :
Новый оператор создает экземпляр класса, выделяя память для нового объекта и возвращая ссылку на эту память. Новый оператор также вызывает конструктор объекта.