La cadena no es un tipo simple, sino una clase que se usa para representar una secuencia de caracteres. Los personajes mismos cumplen con los estándares Unicode, y hay dos formas de inicializarlos.
Por ejemplo: String Saluding = "¡Buenos días! /N";
String saludo = nueva cadena (= "¡Buenos días! /N");
La característica de la cadena es que una vez asignado, el objeto de caracteres al que señala no se puede cambiar.
StringBuffer es un objeto de cadena con las características del paso de referencia de objeto.
El objeto StringBuffer puede llamar a sus métodos para aumentar, insertar, modificar y eliminar dinámicamente las operaciones, y no necesita especificar el tamaño de antemano como una matriz, para lograr el efecto de insertar caracteres varias veces y sacarlos a la vez. , por lo que es muy flexible y conveniente operar cadenas.
Una vez que se genera la cadena final deseada a través de StringBuffer, se puede llamar método de toString para convertirla en un objeto de cadena.
La posición de estas dos clases en el procesamiento de cadenas es evidente. Vamos a explicarlo desde los siguientes puntos
1. Comparación de los dos en términos de velocidad de ejecución: stringbuffer> cadena
2. String <StringBuffer Reason String: String Constant StringBuffer: Variable de creación de caracteres Desde el nombre anterior, String es una "constante de creación de caracteres", es decir, un objeto inmutable. Es posible que tenga una pregunta sobre la comprensión de esta oración, como este código:
Cadena S = "ABCD";
Obviamente, cambiamos la variable de cadena, ¿por qué dijo que no ha cambiado? Un objeto S se usa para ejecutar la segunda línea de código, lo que significa que el objeto S no ha cambiado antes, por lo que decimos que el tipo de cadena es un objeto no cambios. En realidad, los objetos nuevos se crean constantemente, y los objetos originales se convertirán en basura y serán recolectados por GC.
Pero StringBuffers son diferentes. La velocidad será más rápida
3. Un ejemplo especial:
La copia del código es la siguiente:
Cadena str = "Esto es solo una" + "simple" + "prueba";
StringBuffer Builder = new StringBuilder ("Esto es solo un"). Append ("Simple"). Append ("Test");
Se sorprenderá al descubrir que la velocidad de generar objetos STR es simplemente demasiado rápida, y en este momento, StringBuffer no tiene ninguna ventaja en la velocidad. En realidad, este es un truco de la JVM, de hecho:
Cadena str = "Esto es solo una" + "simple" + "prueba";
De hecho:
String str = "Esta es solo una prueba simple";
Entonces no lleva mucho tiempo. Pero lo que debe tener en cuenta aquí es que si su cadena proviene de otro objeto de cadena, la velocidad no es tan rápida, por ejemplo:
String str2 = "esto es solo una";
En este momento, el JVM lo hará de manera regular de la manera original.
4.StringBuilder y StringBuffer
StringBuilder: StringBuffer que no es seguro: hilo seguro cuando somos utilizados por múltiples hilos en el búfer de cadena, el JVM no puede garantizar que la operación de StringBuilder sea segura. . de. Por supuesto, en la mayoría de los casos, operamos bajo un solo hilo, por lo que en la mayoría de los casos, se recomienda usar StringBuilder en lugar de StringBuffer, que es la razón de la velocidad.
Resumen del uso de los tres:
1. Si desea operar una pequeña cantidad de datos, use = String
2. Operar una gran cantidad de datos en un solo buffer de cadena roscada = StringBuilder
3. Operar una gran cantidad de datos en una cadena multiproceso de buffer = StringBuffer