Cuándo usar StringBuilder en Java [duplicado]
En general, se supone que es preferible utilizar a StringBuilder
para la concatenación de cadenas en Java. Este es siempre el caso?
Lo que quiero decir es esto: ¿La sobrecarga de crear un StringBuilder
objeto, llamar al append()
método y finalmente toString()
ya es menor que concatenar cadenas existentes con el +
operador para dos cadenas, o solo es recomendable para más (de dos) cadenas?
Si existe tal umbral, ¿de qué depende (quizás de la longitud de la cadena, pero de qué manera)?
Y finalmente, ¿cambiaría la legibilidad y concisión de la +
concatenación por el desempeño de StringBuilder
en casos más pequeños como dos, tres o cuatro cadenas?
El uso explícito de StringBuilder
para concatenaciones regulares se menciona como obsoleto en Consejos obsoletos de optimización de Java así como en Mitos urbanos de Java .
Si usas la concatenación de cadenas en un bucle, algo como esto,
String s = "";
for (int i = 0; i < 100; i++) {
s += ", " + i;
}
entonces deberías usar a StringBuilder
(not StringBuffer
) en lugar de a String
, porque es mucho más rápido y consume menos memoria.
Si tienes una sola declaración,
String s = "1, " + "2, " + "3, " + "4, " ...;
entonces puedes usar String
s, porque el compilador lo usará StringBuilder
automáticamente.
La respuesta de Ralph es fabulosa. Preferiría usar la clase StringBuilder para construir/decorar String porque su uso se parece más al patrón Builder.
public String decorateTheString(String orgStr){
StringBuilder builder = new StringBuilder();
builder.append(orgStr);
builder.deleteCharAt(orgStr.length()-1);
builder.insert(0,builder.hashCode());
return builder.toString();
}
Se puede utilizar como ayudante/constructor para construir la cadena, no la cadena en sí.