new
Operator nie korzysta z pomocy konstruktora do przydzielenia pamięci. Nie ma to nic wspólnego z konstruktorem. Basically Java's version of malloc
is new
.
new
operatora:
- przydziela pamięci dla obiektu
- wywołuje konstruktora obiektu
- powraca odniesienie do tej pamięci
konstruktor jest wykonywany oddzielnie, aby wykonać wszelkie czynności podczas inicjalizacji jak przydzielanie wartości do obiektów i zmiennych. Jeśli nie Konstruktor jest zdefiniowany, wówczas kompilator stworzy domyślnego konstruktora i przydzieli domyślne wartości:
Poniższa tabela zawiera zestawienie wartości domyślne dla różnych typów danych. source
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
Więc new
operator przydziela tylko pamięć i zwraca referencję do tej pamięci.
Zobacz documentation:
Nowy operator instancję klasy poprzez przydzielanie pamięci dla nowego obiektu i zwracanie odniesienie do tej pamięci. Nowy operator wywołuje również konstruktor obiektu.
Nie mam ochoty, aby to pytanie miało 6 zniżek, najprawdopodobniej spadkowcy nie rozumieli, o co naprawdę prosił OP. Mamy nadzieję, że 6 użytkowników walczyło z przeciwnościami. –
tak dokładnie @ Jean-FrançoisSavard –
Twoje pytanie zawiera własną odpowiedź. Niejasne, o co pytasz. – EJP