Объекты в строковом постоянном пуле в 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 ответа
s = "Fred"
s = s+47;
=>s = Fred47
s = s.substring(2,5);
=>s = ed4
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 объекта.