Sobes.tech
Junior — Middle

Que abordagens e métodos podem ser utilizados para evitar o uso excessivo de memória ao concatenar strings sequencialmente dentro de um ciclo?

sobes.tech IA

Resposta da IA

Ao concatenar strings dentro de um ciclo em Java, é importante evitar criar múltiplos objetos intermédios do tipo String, pois as strings em Java são imutáveis. Cada operador + no ciclo cria um novo objeto, levando a um uso excessivo de memória e a uma diminuição do desempenho.

Para evitar isso, usam-se as seguintes abordagens:

  • StringBuilder — uma classe que permite acumular strings de forma eficiente sem criar novos objetos a cada adição. Use o método append() dentro do ciclo e, ao terminar, chame toString() para obter a string final.

  • StringBuffer — semelhante ao StringBuilder, mas é seguro para uso em ambientes multithread (síncrono). Usado se for necessário acesso por múltiplas threads.

Exemplo usando StringBuilder:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append("string ").append(i).append("\n");
}
String resultado = sb.toString();

Este método reduz significativamente a carga de memória e melhora o desempenho em comparação com a concatenação de strings usando + em um ciclo.