E aí pessoal, estou fazendo o Test Killer para a SCJP, e fiquei com dúvida na seguinte questão:
Question 91
Given:
11. public String makinStrings() {
12. String s = “Fred”;
13. s = s + “47”;
14. s = s.substring(2, 5);
15. s = s.toUpperCase();
16. return s.toString();
17. }
How many String objects will be created when this method is invoked?
A. 1
B. 2
C. 3
D. 4
E. 5
F. 6
A resposta desta questão é “C”: 3 objetos String serão criados quando este método for invocado. Eu errei, marquei a resposta “D”.
Eu raciocinei da seguinte maneira:
String s = “Fred” - 1 objeto String criado.
s = s + “47” - 2 objetos criados.
s = s.substring(2, 5) - 3 objetos criados.
s = s.toUpperCase() - 4 objetos criados.
Porque somente 3 objetos String são criados? Não são 4?