Почему объектная инициализация использует new
ключевое слово назвало динамическое выделение памяти с самого времени компиляции, мы должны знать память, необходимую для того объекта.
Также объясните, что происходит, когда Вы делаете ClassA object = new ClassA();
в "куче" и стеке.
Это динамично, поскольку вы не знаете , когда ему нужно выделить - вы выделяете по требованию.
Обратите также внимание на то, что вы знаете, сколько памяти требуется этому объекту, но не знаете, сколько элементов этого объекта требуется . Это можно определить только во время выполнения (например, массив переменного размера).
Все Java-объекты выделяются динамически. Вы всегда передаете им ссылки. Так устроен язык. Когда вы это сделаете:
ClassA obj = new ClassA();
Затем объект выделяется в куче, и ссылка на него сохраняется в стеке (конечно, при условии, что это внутри метода). Это означает, что вы всегда можете передавать объекты, не беспокоясь о том, где они хранятся.