Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida: Qual a diferença entre a classe String e a classe StringBuilder?

Boa noite!

No texto diz que o código abaixo está criando vários objetos:

String texto = "Socorram";
texto = texto.concat("-");
texto = texto.concat("me");
texto = texto.concat(", ");
texto = texto.concat("subi ");
texto = texto.concat("no ");
texto = texto.concat("ônibus ");
texto = texto.concat("em ");
texto = texto.concat("Marrocos");
System.out.println(texto);

Em seguida, diz que o código abaixo é o mais correto, pois está usando a mesma referencia (builder):

StringBuilder builder = new StringBuilder("Socorram");
builder.append("-");
builder.append("me");
builder.append(", ");
builder.append("subi ");
builder.append("no ");
builder.append("ônibus ");
builder.append("em ");
builder.append("Marrocos");
String texto = builder.toString();
System.out.println(texto);

Pelo que eu entendi, os dois códigos usam a mesma referencia para concatenar. O primeiro usa a variável texto. O segundo usa a variável builder.

Não entendi a diferença que quiseram mostrar entre a classe String e a classe StringBuilder.

3 respostas
solução!

Boa noite, Danilo! Como vai?

O que está em questão não é a referência e sim a quantidade de objetos nas operações!

No primeiro trecho de código, a cada vez que vc faz texto = texto.concat("..."); um novo objeto do tipo String é criado pq o método concat() sempre retorna um novo objeto! Ou seja, no final das contas vc colocou na memória 9 objetos do tipo String.

Já no segundo trecho de código vc tem apenas um objeto do tipo StringBuilder sendo alterado a cada linha e no final produzindo uma String. Esse trecho então colaca 2 objetos em memória, um do tipo StringBuilder e outro do tipo String.

Eis aí a diferença e a vantagem de utilizar o StringBuilder nesse caso.

Pegou a ideia? Qualquer dúvida é só falar!

Grande abraço e bons estudos!

Agora sim entendi, Gabriel!

Obrigado!

Abraços e bons estudos!

Por nada, Danilo! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço!