Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Quantidade de objetos criados quando usado replace na String

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.

1 resposta
solução!

nome = nome.toLowerCase(); não destrói a String, apenas faz nome apontar para a nova String em lower case.