¿Por qué String es más eficiente que StringBuffer en JAVA?
1. Inicialización del objeto StringBuffer
A diferencia de la inicialización de la clase String, la inicialización del objeto StringBuffer tiene una sintaxis especial proporcionada por Java, pero generalmente se inicializa mediante el método constructor.
Por ejemplo:
búfer de cadena s = nuevo búfer de cadena();
El objeto StringBuffer inicializado de esta manera es un objeto vacío.
Si necesita crear un objeto StringBuffer que contenga contenido, puede usar:
string buffer s = new string buffer(" ABC ");
Inicializado así El contenido del objeto StringBuffer es la cadena "abc".
Cabe señalar que StringBuffer y String son tipos diferentes y no se pueden convertir directamente. Los siguientes códigos son todos incorrectos:
StringBuffer s = " abc//El tipo de asignación no coincide
string buffer s = (string buffer)" ABC ";//Hay sin relación de herencia, la transferencia forzada no es posible
El código para convertir entre objetos StringBuffer y objetos String es el siguiente:
String s = "abc
buffer de cadena sb 1 = nuevo buffer de cadena(" 123 ");
StringBuffer sb2 = nuevo buffer de cadena //La cadena se convierte en StringBuffer.
string s 1 = sb 1. tostring(); //Convierte StringBuffer en cadena
2. Métodos comunes de StringBuffer
Métodos en la clase StringBuffer Principalmente. para cambios en cadenas, como adición, inserción y eliminación, que también es la principal diferencia entre las clases StringBuffer y String.
A. Método Append
Agregar búfer de cadena pública (booleano b)
La función de este método es agregar el contenido al final del StringBuffer actual. objeto. Después de llamar a este método, el contenido del objeto StringBuffer también cambiará, por ejemplo:
string buffer sb = new string buffer("ABC");
sb.append(true );
El valor del objeto sb pasará a ser "abctrue".
El uso de este método para conectar cadenas guardará más contenido que la cadena. Por ejemplo, se aplica a la conexión de declaraciones SQL de bases de datos, como:
búfer de cadena sb = nueva cadena. buffer ();
String usuario = " prueba
cadena pwd = " 123 ";
sb . append(" seleccione * de información de usuario donde nombre de usuario = " )
.append(usuario)
append(" y pwd= ")
append(pwd);
entonces. objeto El valor de sb es la cadena "select * from userinfo donde nombre de usuario = prueba, pwd = 123".
B. Método de eliminación de caracteres
Búfer de cadena pública eliminar charat(int index)
La función de este método es eliminar los caracteres en la posición especificada, y luego elimine los caracteres restantes. El contenido forma una nueva cadena. Por ejemplo:
búfer de cadena sb = nuevo búfer de cadena(" Prueba ");
Alguien (abreviatura de alguien) elimina charat(1);
Esto La función del segmento de código es eliminar el carácter con valor de índice 1 en el objeto de cadena sb, es decir, eliminar el segundo carácter y el contenido restante forma una nueva cadena. El valor del objeto sb se convierte en "Tst".
También existe un método de eliminación con función similar:
Eliminación del búfer de cadena pública (int start, int end)
La función de este método es eliminar los especificados Todos los caracteres dentro del rango, incluidos los rangos con un valor de índice inicial y sin valor de índice final. Por ejemplo:
búfer de cadena sb = nuevo búfer de cadena(" cadena de prueba ");
Alguien (abreviatura de alguien) elimina (1, 4);
La función de este código es eliminar todos los caracteres desde el valor de índice 1 (inclusive) hasta el valor de índice 4 (exclusivo), y los caracteres restantes forman una nueva cadena. El valor del objeto sb es "TString".
Método de inserción C.
Inserción pública de StringBuffer (int offset, boolean b)
La función de este método es insertar el contenido en el objeto StringBuffer y luego forma una nueva cuerda. Por ejemplo:
búfer de cadena sb = nuevo búfer de cadena(" cadena de prueba ");
sb.insert(4, false);
Este código de ejemplo La función es insertar un valor falso en el valor de índice 4 del objeto sb para formar una nueva cadena y luego, después de la ejecución, el valor del objeto sb es "TestfalseString".
D. Método inverso
Búfer de cadena pública inversa ()
La función de este método es invertir el contenido del objeto StringBuffer y luego formar un nuevo. cadena. Por ejemplo:
búfer de cadena sb = nuevo búfer de cadena("ABC");
sb revert();
Después de la inversión, el contenido del objeto. sb se convertirá en "cba".
e, método setCharAt
public void setCharAt(int index, char ch)
La función de este método es establecer el valor del índice en el objeto en el carácter en la posición del índice Modificado al nuevo carácter ch. Por ejemplo:
búfer de cadena sb = nuevo búfer de cadena("ABC");
sb.setCharAt(1, 'D');
Objeto sb El valor pasará a ser "aDc".
Método F.trimToSize
Public void trimToSize()
La función de este método es reducir el espacio de almacenamiento en el objeto StringBuffer a la misma longitud que la longitud de la cuerda, reduciendo así el desperdicio de espacio.