Galera,
sei que exite milhões de tópicos abertos sobre quantos objetos são criados na concatenação de String, porém, fiquei com uma dúvida ao ver um simulado, para não ressuscitar nem um tópico resolvi criar esse:
veja o seguinte código:
public String makinStrings() {
String s = "Fred"; //aqui cria 2 ?
s = s + "47"; //aqui cria +1 ?
s = s.substring(2, 5); // aqui não seria +1 e o mesmo estaria para o GC?
s = s.toUpperCase(); // aqui não seria +1 e o mesmo estaria para o GC?
return s.toString();
}
Quantos objetos serão criados nesse código?
A resposta é 3,
mas fiquei confuso pois achava que ao fazer s.substring ou s.toUpperCase ele criava esses objetos e os mesmos ficariam para o GC.
resumindo…
achei que ao fazer isso
s = s.substring(2,5); eu criaria um novo objeto, e o s passa a refencia-lo, sendo assim o objeto antigo que o s referenciava seria abandonado.