Объекты в строковом постоянном пуле в Java

public class NewClass {

    public String makinStrings() {
        String s = "Fred";
        s = s + "47";
        s = s.substring(2, 5);
        s = s.toUpperCase();
        return s.toString();
    }
}

Сколько объектов создано в вышеуказанной программе? Я вижу как 4 объекта после преобразования в заглавную строку, но ответ 3 в соответствии с книгой scjp. Я не понимаю, как получилось только 3 объекта

2 ответа

  1. s = "Fred"
  2. s = s+47; => s = Fred47
  3. s = s.substring(2,5); => s = ed4
  4. s = s.toUpperCase(); => s = ED4

Да 3 объекта

    String s = "Fred";             // created in pool
    s = s + "47";                  // created in heap
    s = s.substring(2, 5);         // created in heap
    s = s.toUpperCase();           // created in heap

Если вы видите источник substring() а также toUpperCase() он возвращает новую строку и s + "47"; поскольку значение s определяется во время выполнения, он создаст новую строку, таким образом, всего 3 объекта.

Другие вопросы по тегам