Java классы - при создании объекта внутри класса или создании поля над объектом(без new)?
Никак не пойму разницы, есть ли вообще она? Можно просто объявить поле над объектом внутри класса, а можно создать через new. Если разница есть, тогда интересно - в случае, когда объявляется поле над объектом, заполняется ли место в heap(мы ведь не использовали new)?
`public class Box{
double radius;
String color;
Ball ball = new Ball();
//Хотя результат получается тот же при создании просто поля над объектом Ball ball;
}`
Ответы (1 шт):
Автор решения: Tokamo
→ Ссылка
Ball ball;
В данном случае создается переменная объектного типа, но сам объект еще не создан. Память выделяется в стеке.
ball = new Ball();
Тут уже создается объект Ball и выделяется под него память в куче, а ball является ссылкой на этот объект.
Ball ball = new Ball;
Более быстрый вариант. Сразу создали объект.
Память под ссылку выделяется в стеке, а под объект в куче