Cadena de cadena constante
Variable de cadena StringBuffer (Safe Safe)
Variable de cadena StringBuilder (sin hito)
En pocas palabras, la principal diferencia de rendimiento entre el tipo de cadena y el tipo StringBuffer es que en realidad la cadena es un objeto inmutable. Por lo tanto, cada vez que cambia el tipo de cadena, en realidad es equivalente a generar un nuevo objeto de cadena y apuntar el puntero a un nuevo objeto de cadena. Por lo tanto, es mejor no usar cadenas para cadenas que a menudo cambian de contenido, porque cada vez que se genera el objeto, tendrá un impacto en el rendimiento del sistema. Especialmente cuando hay demasiados objetos referenciados en la memoria, el GC del JVM comenzará a funcionar, lo que definitivamente será bastante lento.
Si usa la clase StringBuffer, el resultado será diferente. Cada vez que el resultado funcionará en el objeto StringBuffer en sí, en lugar de generar un nuevo objeto y luego cambiar la referencia del objeto. Por lo tanto, en general, recomendamos usar StringBuffer, especialmente cuando los objetos de cadena a menudo se cambian. En algunos casos especiales, el empalme de los objetos de cadena es realmente interpretado por el JVM como un empalme de los objetos StringBuffer. Por lo tanto, la velocidad de los objetos de cadena no es más lenta que los objetos StringBuffer en estos momentos. Especialmente en la siguiente generación de objetos de cadena, la eficiencia de la cadena es mucho más rápida que StringBuffer:
Cadena s1 = "Esto es solo una" + "simple" + "prueba";
StringBuffer sb = new StringBuilder ("Esto es solo un"). Append ("Simple"). Append ("Test");
Se sorprenderá al descubrir que la velocidad de generar objetos S1 String es simplemente demasiado rápida, y en este momento, StringBuffer no tiene ninguna ventaja en la velocidad. De hecho, este es un truco del JVM. En los ojos de la JVM, esto
Cadena s1 = "Esto es solo una" + "simple" + "prueba"; De hecho es:
String S1 = "Esta es solo una prueba simple"; Entonces, por supuesto, no lleva demasiado tiempo. Pero lo que debe tener en cuenta aquí es que si su cadena proviene de otra
Para los objetos de cadena, la velocidad no es tan rápida, por ejemplo:
String S2 = "Esto es solo A";
Cadena s3 = "simple";
Cadena s4 = "prueba";
Cadena S1 = S2 + S3 + S4;
En este momento, el JVM lo hará de manera regular de la manera original
En la mayoría de los casos, StringBuffer> String
Stringbuffer
Java.lang.StringBuffer Secuencia de carácter mutable Safe Safe. Un búfer de cadena en forma de cadena, pero no se puede modificar. Aunque contiene una cierta secuencia de caracteres en cualquier momento, la longitud y el contenido de la secuencia pueden cambiarse mediante algunas llamadas de método.
Los búferes de cadena se pueden usar de manera segura para múltiples hilos. Estos métodos se pueden sincronizar cuando es necesario, por lo que todas las operaciones en cualquier instancia particular parecen ocurrir en un orden en serie que sea consistente con el orden de las llamadas de método realizadas por cada hilo involucrado.
Las operaciones principales en StringBuffer son los métodos de adjunto e inserto, que se pueden sobrecargar para aceptar cualquier tipo de datos. Cada método puede convertir efectivamente los datos dados en una cadena, y luego agregar o insertar los caracteres de esa cadena en el búfer de cadena. El método de agregado siempre agrega estos caracteres al final del búfer; El método de inserción agrega caracteres en el punto especificado.
Por ejemplo, si Z se refiere a un objeto de búfer de cadena cuyo contenido actual es "inicio", este método llama z.append ("le") hace que el búfer de cadena contenga "sobresalto", y z.insert (4, "le") cambia el búfer de cadena para contener "estrella de estrella".
En la mayoría de los casos, StringBuilder> StringBuffer
java.lang.stringbuilde
java.lang.stringbuilder Una secuencia de caracteres variable es nueva en 5.0. Esta clase proporciona una API compatible con StringBuffer, pero no se garantiza que se sincronice. Esta clase está diseñada para ser un simple reemplazo para StringBuffer, cuando los búferes de cadena son utilizados por un solo hilo (esto es común). Si es posible, se recomienda tomar esta clase primero, ya que es más rápido que StringBuffer en la mayoría de las implementaciones. Los métodos de ambos son básicamente los mismos.
Lo anterior es una compilación de la información en Java String, StringBuffer y StringBuilder. Continuaremos agregando información relevante en el futuro. ¡Gracias por su apoyo para este sitio web!