Cuerda y StringBu ff er, ¿cuál es la diferencia StringBuilder es? ¿Por qué cadena es inmutable?

La variabilidad en
términos simples:
clase String utilizando fi nal clave cadena almacenada matriz de caracteres, valor carácter privado final [], por lo que el objeto String es inmutable.
El StringBuilder y StringBu ff er hereda de la clase AbstractStringBuilder, pero también utilizan carbón matriz de cadenas de caracteres almacenados en AbstractStringBuilder en el valor [] pero sin modificar por las palabras clave fi nales, por lo que los dos objetos son variables.
Y StringBuilder constructor StringBu ff er están llamando al constructor de la clase padre se implementa AbstractStringBuilder

fuente:

abstract class AbstractStringBuilder implements Appendable, CharSequence {    
	char[] value;    
	int count;    
	AbstractStringBuilder() {    }    
	AbstractStringBuilder(int capacity) {        
	value = new char[capacity];    
}
AbstractStringBuilder.java

Seguridad de los hilos
en los objetos String son inmutables, se puede entender como una caja fuerte hilo constante. AbstractStringBuilder es er StringBuilder StringBu ss con la clase padre común que define el funcionamiento básico de algunos de la cadena, tales como expandCapacity, -a, -i, indexOf otros métodos públicos.
método er StringBu ff añade genlock o método llamada añadió un bloqueo de sincronización, también lo son thread-safe.
StringBuilder y ningún método más genlock, así que no seguro para subprocesos.

rendimiento

Cada vez que un cambio de tipo String, genera un nuevo objeto String, entonces el puntero al nuevo objeto String.
StringBu ff er cada vez a sí mismo StringBu ff objeto er de operar, en lugar de generar nuevo objeto y cambiar la referencia de objeto.
Uso StirngBuilder en comparación con el uso StringBu ff er sólo recibe alrededor del 10% al 15% más de rendimiento en las mismas circunstancias, pero que llevan el riesgo de multithreading inseguro.

Para el uso de tres resumen:
1. El funcionamiento de una pequeña cantidad de datos String =
2. gran cantidad de datos en un único subproceso el funcionamiento de la cadena de funcionamiento tampón grandes cantidades de operación de datos en el StringBuilder = 3. 3. Una cadena multi-hilo operativo buffer = StringBu ff er

Publicado 53 artículos originales · ganado elogios 5 · Vistas 450

Supongo que te gusta

Origin blog.csdn.net/qq_45287265/article/details/104967295
Recomendado
Clasificación