String, StringBuffer y StringBuilder en Java son clases de cadenas a menudo utilizadas en la programación. En resumen, mire sus diferencias y lo mismo.
1. Variable y sin cambios
La clase de cadena usa la matriz de caracteres para guardar la cadena.
Valor de char final privado [];
Tanto StringBuilder como StringBuffer son heredados de la clase AbstractStringBuilder.
Char [] valor;
2. ¿Es seguro?
Los objetos en la cadena son inmutables, lo que puede entenderse como constante, obviamente, el hilo es seguro.
AbstractStringBuilder es una clase pública principal entre StringBuilder y StringBuffer, que define a los operantes básicos de alguna cadena, como ExpandCapacity, Append, Insert, IndexOf y otros métodos públicos.
StringBuffer agrega un bloqueo sincrónico o el método de llamada se agrega al método, por lo que es hild. Consulte el siguiente código fuente:
Copiar código del código de la siguiente manera:
Public sincronizado StringBuffer Reverse () {{) {
Super.reverse ();
Devolver esto;
}
public int indexOf (string str) {
Devuelve indexOf (str, 0);
}
StringBuilder no tiene un bloqueo sincrónico en el método, por lo que es una seguridad no del retraso.
3. StringBuilder y StringBuffer en común
StringBuilder y StringBuffer tienen Public -Class -Class AbstractStringBuilder (clase abstracta).
Una de las diferencias entre las clases e interfaces abstractas es: algunos métodos públicos de algunas subclases pueden definirse en las clases abstractas solo necesita agregar nuevas funciones, y no es necesario escribir repetidamente los métodos existentes; del método en la interfaz.
Los métodos de StringBuilder y StringBuffer llaman métodos públicos en AbstractStringBuilder, como Super.appending (...). Es solo que StringBuffer agregará la palabra clave sincronizada al método para sincronizar.
Finalmente, si el programa no es multifreshumido, la eficiencia de usar StringBuilder es más alta que StringBuffer.