2016-09-24 4 views
1

В следующем оператореКак создается объект через System.out.println («Утро»), REACHABLE?

System.out.println("Morning"); 

объект, содержащий значение «Утро» создается внутри строки пула. И мы не храним его адрес явно. Но все же этот объект доступен.

Если мы попытаемся сделать заново System.out.println("Morning");, JVM повторно использует ранее созданный объект, поскольку он существует в пуле строк, он не создает новый объект.

Как JVM отслеживает этот объект, даже если мы не храним его адрес явно?

ответ

1

"Morning" является строковым литералом. Все литералы строк добавляются в пул строковых констант при загрузке класса.

И мы не хранить его адрес явно

ли хранить мы на ссылку или нет, не имеет ничего общего с добавлением строковых литералов в пул констант. Все в пределах "" идет туда.

Но этот объект доступен.

Опять же, достижимость не имеет ничего общего с добавлением и извлечением из пула строковых констант. Как JVM может быть специфичным для JVM, но некоторые JVM могут добавлять строки констант класса в пул констант String во время загрузки класса.

+0

Что такое "Constant Strings"? и как он добавляется в String Constant Pool во время загрузки класса? – user404

+0

Используйте 'javap -v yourClassName', и вы можете это увидеть сами. :) @AmirHasan – TheLostMind

Смежные вопросы