#ВопросСподводхом — ответ от нашего ментора по Java🔥



Объясняю: в Java объекты строк хранятся в String Pool. И если мы создаем строковую переменную и даем ей значение сразу, то компилятор преобразует это в создание объекта особым образом: он проверяет, есть ли такая строка в пуле: если да — вернёт её ссылку, если нет — создаст новую, положит в пул и вернёт ссылку.



Но есть особенность: если создавать строку через конструктор, она будет создана в heap, а не String Pool.



А теперь ответ на вопрос: создано будет два объекта! Почему? Чтобы создать строку с помощью конструктора, ей надо передать уже готовую строку в конструктор, а значение это указывается «обычно», а значит сначала оно будет создано в String Pool, потом ссылка на этот объект передастся в конструктор и тот уже создаст новый объект в heap.



Еще одно объяснение.