sandeco:
Pra mim a resposta é 4
Se vc colocar este código e depurar, será criado um id diferente para cada objeto
na execução dos códigos
String s = "Fred";
s = s + "47";
s = s.substring(2,5);
s = s.toUpperCase();
return s.toString(), não cria nenhum objeto… só retorna o atual.
o uso do pool de Strings seria algo do tipo:
String s1 = "teste"
String s2 = "teste"
Os dois objetos apontam para o mesmo lugar e tem o mesmo identificador de objeto. por isso é usado o pool… isso é economia de memória no Java
primeiro que c não ta nem contando direito hehehe… se contar com as strings do poll então seriam 5 strings… “Fred”, “47”, “Fred47”, “ed4”, “ED4”
E o fato é que vc deve ler a pergunta, que é, quantos objetos são criados quando o método é EXECUTADO, e as strings literais NÃO são criadas quando o método é executado, os literias são criados quando a classe que as contém é carregada na JVM, e não no momento da passagem no método… e nem garantias de que as literias são criados por esta classe é possivle ter, pois ela pode já esta carregada por outro classe que as continha previamente…