Выделение памяти в Java

167
10 марта 2018, 19:16

Помогите разобраться, что происходит во время выполнения этих строк:

1. String str;
2. str = new String("Hi");

Во время выполнения первой строки происходит создание ссылки str в стеке. А во время выполнения второй выделение памяти в heap и связывание этого участка с ссылкой в стеке. Так?

И как это работает с составними типами? Например:

class Temp{
    String str1;
    String str2;
}
1. Temp temp;
2. temp = new Temp();

Во время выполнения первой строчки в стеке создастся не только ссылка temp но и ссылки str1, str2

Answer 1

Да, все правильно. Но перед созданием объекта, все его поля должны быть инициализированы. Для этого создается конструктор класса в котором необходимо выделить память в куче, для всех его полей

READ ALSO
Работа с JavaFX и ее потоком

Работа с JavaFX и ее потоком

У меня есть JavaFX приложение со своим потоком и еще несколько других потоковМне нужно решить проблему с тем, что из этих потоков нельзя работать...

158
Как изменить цвет пикселя и увеличить изображение в N раз

Как изменить цвет пикселя и увеличить изображение в N раз

Доброго времени суток! Есть задачка: "В исходных файлах cluebmp и mrBody

199
Primefaces onemenu не передает объект

Primefaces onemenu не передает объект

Не происходит сохранения студента, при выбранном универе, причем когда можно оставить поле univer пустым, все отлично сохраняет

126
Не могу понять почему возникает IndexOutOfBoundsException

Не могу понять почему возникает IndexOutOfBoundsException

При работе этого кода возникает IndexOutOfBoundsException, хотя индекс никак не может выходить за пределы arrayList:

171