Avatar ·

¿Cuál es la diferencia entre StringBuilder y StringBuffer en Java?

¡Hola a todos! Estoy aprendiendo Java y escribiendo un pequeño módulo de servidor para procesar logs. Necesito construir strings a partir de muchos fragmentos, y sé que la concatenación con "+" en un bucle es mala porque se crean muchos objetos String adicionales. Empecé a usar StringBuffer, pero mi líder de equipo dijo que es mejor cambiar a StringBuilder. No entendí bien por qué. En internet escriben que ambas clases hacen lo mismo: permiten modificar un string sin crear nuevos objetos. ¿Entonces por qué hay dos clases? ¿Y cuál debo elegir? Aquí hay un ejemplo de mi 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("Procesamiento completado\n"); } System.out.println(log.toString()); } } ``` Si simplemente reemplazo StringBuffer por StringBuilder, el código sigue funcionando. ¿Significa eso que