por que cuando utilizo StringBuilder el tiempo de ejecucion disminuye respecto al utilizar String
alguna explicacion?
Dados los Siguientes codigos:
String result = "";
for (String s : hugeArray) {
result = result + s;
}
y
StringBuilder sb = new StringBuilder();
for (String s : hugeArray) {
sb.append(s);
}
String result = sb.toString();
con hugeArray con miles de strings.
el StringBuilder ya es un contendedor en si y solo tiene que anexar los strings al buffer interno ya existente y String tiene que generar N veces nuevas instancias de String en cada concatenation resultando mas costoso en tiempo de cpu y memoria.
Fuente:
http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-java
Saludos
entonces StringBuilder es un contenedor
en que casos usar String y en que casos usar String builder?
Segun la pagina
https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html
CitarA mutable sequence of characters. This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case).
StringBuilder es un constructor de Cadenas su nombre lo dice y es parecido a StringBuffer
String lo usas cuando ya tienes la cadena construida y va a tener minimas o ninguna modificacion (Almacenar datos finales) y StringBuilder lo usas cuando sabes que vas a realizar varias concatenaciones a una misma cadena y al final lo puedes pasar a String.
Saludos
Buenas noches amigo.
Los métodos de StringBuilder no son sincronizados, por lo que tiene mejor rendimiento que StringBuffer. En general, la concatenación de String ocurre con variables locales a un método, por lo que es seguro usar StringBuilder en lugar de StringBuffer. En métodos que hacen uso intensivo de la concatenación, la diferente en rendimiento puede ser importante.
StringBuilder se usa de la siguiente manera:
StringBuilder holamundoBuilder = new StringBuilder();
holamundoBuilder.append("Hola, ");
holamundoBuilder.append("mundo");
String holamundo = holamundoBuilder.toString();
Espero y te sea util