La diferencia entre cadenas, buffers de cadenas y generadores de cadenas
1. Comparación de la velocidad de ejecución entre los tres: StringBuilder > StringBuffer ? > ?String
String < (StringBuffer, StringBuilder) Motivo
String: cadena de caracteres constantes
StringBuffer: variables de cadena
StringBuilder: variables de cadena
Como se puede ver en el nombre anterior, String es una "constante de creación de caracteres", es decir Objetos inmutables.
2. StringBuffer/StringBuilder es una línea de ensamblaje para producir este producto. StringBuffer es lento pero tiene alta seguridad (hilos). StringBuilder es rápido pero tiene poca seguridad (hilos).
3. La clase String es la clase final y el valor en la memoria de referencia es inmutable. Las referencias a grandes cantidades de datos son ineficientes. StringBuffer se utiliza para modificaciones frecuentes y es seguro para subprocesos, mientras que StringBuilder no es seguro para subprocesos.
4. Si solo se usa para declarar variables, use String. Si se usa para operaciones frecuentes entre cadenas, use StringBuffer.
4. Si opera en una pequeña cantidad de cadenas, use String. Si realiza operaciones de un solo subproceso en una gran cantidad de cadenas, use StringBuilder. de cadenas, utilice StringBuffer.
5. StringBuffer, StringBuilder y String también se utilizan para representar cadenas. La clase String es una clase inmutable y cualquier cambio en String desencadenará la creación de un nuevo objeto String; StringBuffer es una clase mutable y cualquier cambio en la cadena a la que hace referencia no generará un nuevo objeto.
6. La diferencia entre las clases StringBuffer y StringBuilder es la misma. Sus principios y operaciones son básicamente los mismos. La diferencia es que StringBuffer admite operaciones concurrentes, es linealmente seguro y es adecuado para su uso en múltiples. -trapos. StringBuilder no admite operaciones concurrentes, es linealmente inseguro y no es adecuado para su uso en subprocesos múltiples. StringBuilder no admite operaciones concurrentes, es linealmente inseguro y no es adecuado para su uso en subprocesos múltiples. La clase StringBuilder recientemente introducida no admite la seguridad de subprocesos, pero su rendimiento de un solo subproceso es mayor que el de StringBuffer.