Ответ 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
выделяет только память и возвращает ссылку на эту память.
См. документацию :
Новый оператор создает экземпляр класса, выделяя память для нового объекта и возвращая ссылку на эту память. Новый оператор также вызывает конструктор объекта.