Repaso
English
Java CoreBaseJV-05

¿Por qué conviene evitar s += x para construir un string largo dentro de un bucle grande?

Opciones

  1. Es un error de sintaxis cuando se usa dentro de un bucle
  2. Los strings son inmutables, así que cada += copia el texto anterior (Opción correcta)
  3. Convierte el string a minúsculas en cada pasada
  4. Solo funciona con números, no con texto

Respuesta

Los strings son inmutables, así que cada += crea un String nuevo y copia todos los caracteres anteriores

Por qué

Un String en Java nunca puede cambiar después de crearse (es inmutable). s += x en realidad significa: crear un String nuevo con el texto anterior más x, y tirar el antiguo.

En un bucle con miles de iteraciones eso son miles de copias, lo que es lento y genera basura.

StringBuilder mantiene un buffer interno que crece, así que añades sin copiar cada vez. Llama a .toString() al final.

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append(i).append(',');
}
String result = sb.toString();

Recuerda

Muchas concatenaciones en un bucle: usa StringBuilder.

Términos clave

Practica esta pregunta en Repaso