2015-10-02 3 views
1
String s = new String("a"); 
    s.concat("b"); 
    s.concat("c"); 

Насколько я понимаю, нет. графов:Сколько объектов создано (пул пула + куча)

В бассейне - 3 ("а", "б", "в")

В куче - 3 ("а", "б", "ас"), где "AB" и «ac» имеют право на сбор мусора.

Я прав?

У меня есть это замешательство. Пожалуйста, помогите.

ответ

3

Вы правы.

  • 3 объекта в постоянном бассейне («a», «b», «c»). Все литералы и
  • 3 в куче, поскольку строка непреложна. Каждый concat создает объект String .

Всего 6.

+0

Предположим, мы делаем строку s1 = новая строка ("ABC"); и пул строк не содержит объект «abc» .. поэтому при компиляции этой строки он делает 2 объекта для той же строки, что и одна, в кучной памяти, а другая - внутри пула строк? я прав? –

+0

@ DesiDelite..yes правильно. – pinaki

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