Analicemos la concatenación de la cadena a continuación.
1.tring
Abra el código fuente de la cadena, como se muestra en la figura
Encontrará que el valor del personaje que almacena la cadena es una constante final. Mirando el método de construcción de la cadena, encontramos que el valor de la cadena está determinado por el método de construcción. Es necesario explicar la palabra clave final aquí
El atributo modificado por final es una constante (el valor no se puede cambiar). Se le asigna un valor al tiempo que lo declara o se le asigna un valor en el método de construcción. Una vez asignado, no se puede cambiar.
Por lo tanto, usando una cadena para implementar la costura de las cadenas. Dado que el valor de la cadena no se puede cambiar, se debe generar una nueva cadena para cada costura para almacenar una nueva cadena. Por lo tanto, el uso de una cadena para manejar la costura de la cadena tendrá un rendimiento muy bajo.
Para obtener más información sobre String, consulte el blog: http://longpo.iteye.com/blog/2199493
2. Stringbuffer
La clase StringBuffer hereda la clase abstractor AbstractStringBuilder y abre el código fuente de AbstractStringBuilder.
Echemos un vistazo a los tres métodos de sobrecarga
Se encuentra que se llama a todos los constructores de la clase principal AbstractStringBuilder.
Se descubrió que la matriz de char en la que los datos de StringBuffer almacenan no son del tipo final, lo que significa que se puede cambiar, y las cadenas construidas todavía tienen espacio libre para empalmar las cadenas.
En StringBuffer, usamos la función append () para empalmar las cadenas. Podemos pensar que aunque todavía queda en la matriz de char, definitivamente no es suficiente para empalmarlo todo el tiempo. Por lo tanto, es necesario observar la implementación del código fuente de la función Append.
Consulte el método de append de su clase principal AbstractStringBuilder
Cuando la matriz de valor no es capaz de capacidad suficiente, se crea una nueva matriz de valor para almacenar la cadena. En este punto, debe comprender el principio del empalme de cadena StringBuffer. Cuando la matriz de valor Char es insuficiente, se creará una matriz de mayor capacidad para almacenar. La eficiencia es significativamente mayor que la de la cadena.
3.Builder de huellas
StringBuilder y Stringbuffer son dos hermanos, y su uso es básicamente el mismo. La diferencia es que StringBuffer está sincronizado y a prueba de hilos, mientras que StringBuilder no garantiza la sincronización y el hilo seguro.
StringBuilder es más rápido que StringBuffer en la mayoría de las implementaciones, y cuando se accede a los búferes de cadena mediante un solo hilo, se recomienda usar StringBuilder primero.
Lo anterior es la opción de cadena Java presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!