Al modificar cadenas, debe utilizar las clases StringBuffer y StringBuilder.
A diferencia de la clase String, los objetos de las clases StringBuffer y StringBuilder se pueden modificar varias veces sin crear nuevos objetos no utilizados.
La clase StringBuilder se propuso en Java 5. La mayor diferencia entre esta y StringBuffer es que StringBuilder El método no es seguro para subprocesos (seguridad para subprocesos significa que cuando acceden varios subprocesos, se utiliza un mecanismo de bloqueo. Cuando un subproceso accede a ciertos datos de esta clase, está protegido y otros subprocesos no pueden acceder a él hasta que el subproceso termine de leer. Se pueden utilizar otros subprocesos. No habrá inconsistencia de datos ni contaminación de datos. El subproceso inseguro significa que no se proporciona protección de acceso a los datos y es posible que varios subprocesos cambien los datos sucesivamente y los datos resultantes sean datos sucios.
Dado que StringBuilder tiene una ventaja de velocidad en comparación con StringBuffer, se recomienda utilizar la clase StringBuilder en la mayoría de los casos. Sin embargo, cuando la aplicación requiere seguridad para subprocesos, se debe utilizar la clase StringBuffer.
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
test String Buffer
Los siguientes son los principales métodos admitidos por la clase StringBuffer:
número de serie | Descripción del método |
---|---|
1 | public StringBuffer append(String s) Agrega la cadena especificada a esta secuencia de caracteres. |
2 | public StringBuffer inversa() Reemplaza esta secuencia de caracteres con su forma invertida. |
3 | eliminación pública (int inicio, int fin) Elimina caracteres de una subcadena de esta secuencia. |
4 | public insert(int offset, int i) Inserta la representación de cadena del argumento int en esta secuencia. |
5 | reemplazar(int start, int end, String str) Reemplaza los caracteres en una subcadena de esta secuencia con los caracteres en el String dado. |
Los métodos de la siguiente lista son similares a los de la clase String:
número de serie | Descripción del método |
1 | int capacidad() devuelve la capacidad actual. |
2 | char charAt(int index) Devuelve el valor char en el índice especificado en esta secuencia. |
3 | void sureCapacity(int minimalCapacity) Garantiza que la capacidad sea al menos igual al mínimo especificado. |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Copia caracteres de esta secuencia a la matriz de caracteres de destino dst . |
5 | int indexOf(String str) Devuelve el índice de la primera aparición de la subcadena especificada en la cadena. |
6 | int indexOf(String str, int fromIndex) Comenzando en el índice especificado, devuelve el índice de la primera aparición de la subcadena especificada en la cadena. |
7 | int lastIndexOf(String str) Devuelve el índice en esta cadena de la aparición más a la derecha de la subcadena especificada. |
8 | int lastIndexOf(String str, int fromIndex) Devuelve el índice en esta cadena de la última aparición de la subcadena especificada. |
9 | int length() devuelve la longitud en caracteres. |
10 | void setCharAt(int index, char ch) Establece el carácter en el índice dado en ch . |
11 | void setLength(int newLength) Establece la longitud de la secuencia de caracteres. |
12 | CharSequence subSequence(int start, int end) Devuelve una nueva secuencia de caracteres que es una subsecuencia de esta secuencia. |
13 | String substring(int start) Devuelve una nueva String que contiene la subsecuencia de caracteres contenida actualmente en esta secuencia de caracteres. |
14 | String substring(int start, int end) Devuelve una nueva String que contiene la subsecuencia de caracteres contenidos actualmente en esta secuencia. |
15 | String toString() Devuelve la representación en cadena de los datos de esta secuencia. |