Na vídeo aula, foi dito que a classe String não é mutável. Pensando nisto, segue um exemplo que gerou dúvida:
package br.com.bytebank.banco.teste;
public class TesteString {
public static void main(String[] args) {
String nome = "Alura";
nome = nome.toLowerCase();
for(int i=0; i < nome.length();i++) {
System.out.println(nome.charAt(i));
}
}
}
No exemplo acima, visivelmente se imagina que temos apenas um objeto no espaço de memória, mas na verdade o nome = nome.toLowerCase(); acabou gerando um segundo objeto em memória ou o objeto foi destruído e reconstruído com o novo valor?
Pergunto isto, pois em vez de usar o código:
//Código comentado
String nome = "Alura";
nome.concat(" escola ");
nome.concat("online.");
Poderia usar:
//Código comentado
String nome = "Alura";
nome = nome + " escola ";
nome = nome + " online.";
Se o objeto for reconstruído, consigo manipular texto sem usar espaço de memória desnecessário e sem impactar na performance da JVM. Com isto, não precisaria usar o StringBuilder.