Avatar ·

Qual é a diferença entre StringBuilder e StringBuffer em Java?

Olá a todos! Estou aprendendo Java e escrevendo um pequeno módulo de servidor para processar logs. Preciso montar strings a partir de muitos fragmentos, e sei que concatenação com "+" em loop é ruim, porque cria muitos objetos String extras. Comecei a usar StringBuffer, mas meu tech lead disse que é melhor mudar para StringBuilder. Não entendi muito bem por quê. Na internet dizem que ambas as classes fazem a mesma coisa: permitem modificar uma string sem criar novos objetos. Então por que existem duas classes? E qual devo escolher? Aqui está um exemplo do meu código: ```java public class LogBuilder { public static void main(String[] args) { StringBuffer log = new StringBuffer(); for (int i = 0; i < 1000; i++) { log.append("Evento #").append(i).append(": "); log.append("Processamento concluído\n"); } System.out.println(log.toString()); } } ``` Se eu simplesmente substituir StringBuffer por StringBuilder, o código continuará funcionando. Isso significa que