¿Por qué conviene evitar s += x para construir un string largo dentro de un bucle grande?
Opciones
- Es un error de sintaxis cuando se usa dentro de un bucle
- Los strings son inmutables, así que cada
+=copia el texto anterior (Opción correcta) - Convierte el string a minúsculas en cada pasada
- 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.