StringBuffer es una clase par de String que proporciona gran parte de la funcionalidad de las strings. La string representa secuencias de caracteres inmutables de longitud fija, mientras que StringBuffer representa secuencias de caracteres modificables y modificables. StringBuffer puede tener caracteres y substrings insertadas en el medio o añadidas al final. Crecerá automáticamente para hacer espacio para tales adiciones y, a menudo, tiene más caracteres preasignados de los que realmente se necesitan, para permitir el crecimiento.
Algunos datos interesantes sobre la clase StringBuffer
Mantenga los siguientes puntos en el fondo de su mente:
- java.lang.StringBuffer extiende (o hereda de) la clase de objeto .
- Todas las interfaces implementadas de la clase StringBuffer: Serializable, Appendable, CharSequence.
- La clase final pública StringBuffer extiende Object implementa Serializable, CharSequence, Appendable.
- Los búferes de string son seguros para que los usen varios subprocesos. Los métodos se pueden sincronizar siempre que sea necesario para que todas las operaciones en cualquier instancia en particular se comporten como si ocurrieran en algún orden en serie.
- Cada vez que ocurre una operación que involucra una secuencia de origen (como agregar o insertar desde una secuencia de origen), esta clase se sincroniza solo en el búfer de string que realiza la operación, no en la fuente.
- Hereda algunos de los métodos de la clase Object que, como clone(), equals(), finalize(), getClass(), hashCode(), notifies( ) , notifyAll().
Recuerde: StringBuilder , J2SE 5 agrega una nueva clase de string a las ya poderosas capacidades de manejo de strings de Java. Esta nueva clase se llama StringBuilder. Es idéntico a StringBuffer excepto por una diferencia importante: no está sincronizado, lo que significa que no es seguro para subprocesos. La ventaja de StringBuilder es un rendimiento más rápido. Sin embargo, en los casos en los que utilice subprocesos múltiples, debe utilizar StringBuffer en lugar de StringBuilder.
Constructores de la clase StringBuffer
1. StringBuffer() : Reserva espacio para 16 caracteres sin reasignación
StringBuffer s = new StringBuffer();
2. StringBuffer (tamaño int) : acepta un argumento entero que establece explícitamente el tamaño del búfer.
StringBuffer s = new StringBuffer(20);
3. StringBuffer(String str): acepta un argumento de string que establece el contenido inicial del objeto StringBuffer y reserva espacio para 16 caracteres más sin reasignación.
StringBuffer s = new StringBuffer("GeeksforGeeks");
Métodos de la clase StringBuffer
Métodos | Acción realizada |
---|---|
adjuntar() | Se utiliza para agregar texto al final del texto existente. |
longitud() | La longitud de un StringBuffer se puede encontrar mediante el método length() |
capacidad() | la capacidad total asignada se puede encontrar mediante el método de capacidad ( ) |
charAt() | |
Eliminar() | Elimina una secuencia de caracteres del objeto que invoca |
eliminarCharAt() | Elimina el carácter en el índice especificado por loc |
asegurarCapacidad() | Garantiza que la capacidad sea al menos igual al mínimo dado. |
insertar() | Inserta texto en la posición de índice especificada |
longitud() | Devuelve la longitud de la string. |
reverso() | Invierte los caracteres dentro de un objeto StringBuffer |
reemplazar() | Reemplace un conjunto de caracteres con otro conjunto dentro de un objeto StringBuffer |
Nota: Además de eso, también se pueden usar todos los métodos que se usan en la clase String. Estos métodos auxiliares son los siguientes:
Se utiliza para aumentar la capacidad de un objeto StringBuffer. La nueva capacidad se establecerá en el valor que especifiquemos o en el doble de la capacidad actual más dos (es decir, capacidad+2), lo que sea mayor. Aquí, la capacidad especifica el tamaño del búfer.
Sintaxis:
void ensureCapacity(int capacity)
- appendCodePoint(int codePoint) : este método agrega la representación de string del argumento codePoint a esta secuencia.
Sintaxis:
public StringBuffer appendCodePoint(int codePoint)
- charAt(índice int)
Este método devuelve el valor de char en esta secuencia en el índice especificado.
Sintaxis:
public char charAt(int index)
- IntStream chars() : este método devuelve un flujo de int cero que extiende los valores de caracteres de esta secuencia.
Sintaxis:
public IntStream chars()
- int codePointAt(int index) : este método devuelve el carácter (punto de código Unicode) en el índice especificado.
Sintaxis:
public int codePointAt(int index)
- int codePointBefore(int index) : este método devuelve el carácter (punto de código Unicode) antes del índice especificado.
Sintaxis:
public int codePointBefore(int index)
- int codePointCount(int beginIndex, int endIndex) : este método devuelve el número de puntos de código Unicode en el rango de texto especificado de esta secuencia.
Sintaxis:
public int codePointCount(int beginIndex, int endIndex)
- IntStream codePoints() : este método devuelve una secuencia de valores de puntos de código de esta secuencia.
Sintaxis:
public IntStream codePoints()
- void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) : en este método, los caracteres se copian de esta secuencia en la array de caracteres de destino dst.
Sintaxis:
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
- int indexOf(String str) : este método devuelve el índice dentro de esta string de la primera aparición de la substring especificada.
Sintaxis:
public int indexOf(String str) public int indexOf(String str, int fromIndex)
- int lastIndexOf(String str) : este método devuelve el índice dentro de esta string de la última aparición de la substring especificada.
Sintaxis:
public int lastIndexOf(String str) public int lastIndexOf(String str, int fromIndex)
- int offsetByCodePoints(int index, int codePointOffset) : este método devuelve el índice dentro de esta secuencia que está desplazado del índice dado por puntos de código codePointOffset.
Sintaxis:
public int offsetByCodePoints(int index, int codePointOffset)
- void setCharAt(int index, char ch) : en este método, el carácter en el índice especificado se establece en ch.
Sintaxis:
public void setCharAt(int index, char ch)
- void setLength(int newLength) : Este método establece la longitud de la secuencia de caracteres.
Sintaxis:
public void setLength(int newLength)
- CharSequence subSequence(int start, int end) : este método devuelve una nueva secuencia de caracteres que es una subsecuencia de esta secuencia.
Sintaxis:
public CharSequence subSequence(int start, int end)
- String substring(int start) : este método devuelve un nuevo String que contiene una subsecuencia de caracteres contenidos actualmente en esta secuencia de caracteres.
Sintaxis:
public String substring(int start) public String substring(int start,int end)
- String toString() : este método devuelve una string que representa los datos en esta secuencia.
Sintaxis:
public String toString()
- void trimToSize() : este método intenta reducir el almacenamiento utilizado para la secuencia de caracteres.
Sintaxis:
public void trimToSize()
Arriba solo hemos discutido los métodos más utilizados y mantenemos un límite estricto alrededor de ellos, ya que son ampliamente utilizados por los geeks de la programación.
Implementación:
Ejemplo 1: Métodos length() y capacity()
Java
// Java Program to Illustrate StringBuffer class // via length() and capacity() methods // Importing I/O classes import java.io.*; // Main class class GFG { // main driver method public static void main(String[] args) { // Creating adn storing string by creating object of // StringBuffer StringBuffer s = new StringBuffer("GeeksforGeeks"); // Getting the length of the string int p = s.length(); // Getting the capacity of the string int q = s.capacity(); // Printing the length and capacity of // above generated input string on console System.out.println("Length of string GeeksforGeeks=" + p); System.out.println( "Capacity of string GeeksforGeeks=" + q); } }
Length of string GeeksforGeeks=13 Capacity of string GeeksforGeeks=29
Ejemplo 2: agregar()
Se utiliza para añadir texto al final del texto existente.
Estas son algunas de sus formas:
StringBuffer append(String str) StringBuffer append(int num)
Java
// Java Program to Illustrate StringBuffer class // via append() method // Importing required classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuffer class and // passing random string StringBuffer s = new StringBuffer("Geeksfor"); // Usage of append() method s.append("Geeks"); // Returns GeeksforGeeks System.out.println(s); s.append(1); // Returns GeeksforGeeks1 System.out.println(s); } }
GeeksforGeeks GeeksforGeeks1
Ejemplo 3: insertar()
Se utiliza para insertar texto en la posición de índice especificada.
Sintaxis: Estos son algunos de sus de la siguiente manera:
StringBuffer insert(int index, String str) StringBuffer insert(int index, char ch)
Aquí, el índice especifica el índice en el que se insertará la string en el objeto StringBuffer que invoca .
Java
// Java Program to Illustrate StringBuffer class // via insert() method // Importing required I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuffer class StringBuffer s = new StringBuffer("GeeksGeeks"); // Inserting element and position as an arguments s.insert(5, "for"); // Returns GeeksforGeeks System.out.println(s); s.insert(0, 5); // Returns 5GeeksforGeeks System.out.println(s); s.insert(3, true); // Returns 5GetrueeksforGeeks System.out.println(s); s.insert(5, 41.35d); // Returns 5Getr41.35ueeksforGeeks System.out.println(s); s.insert(8, 41.35f); // Returns 5Getr41.41.3535ueeksforGeeks System.out.println(s); // Declaring and initializing character array char geeks_arr[] = { 'p', 'a', 'w', 'a', 'n' }; // Inserting character array at offset 9 s.insert(2, geeks_arr); // Returns 5Gpawanetr41.41.3535ueeksforGeeks System.out.println(s); } }
GeeksforGeeks 5GeeksforGeeks 5GetrueeksforGeeks 5Getr41.35ueeksforGeeks 5Getr41.41.3535ueeksforGeeks 5Gpawanetr41.41.3535ueeksforGeeks
Ejemplo 4: reversa()
Puede invertir los caracteres dentro de un objeto StringBuffer utilizando reverse(). Este método devuelve el objeto invertido en el que se llamó.
Java
// Java Program to Illustrate StringBuffer class // via reverse() method // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating a string via creating // object of StringBuffer class StringBuffer s = new StringBuffer("GeeksGeeks"); // Invoking reverse() method s.reverse(); // Returns "skeeGrofskeeG" System.out.println(s); } }
skeeGskeeG
Ejemplo 5: delete( ) y deleteCharAt()
Puede eliminar caracteres dentro de un StringBuffer utilizando los métodos delete() y deleteCharAt() . El método delete() elimina una secuencia de caracteres del objeto que invoca. Aquí, el índice inicial especifica el índice del primer carácter que se eliminará y el índice final especifica un índice uno más allá del último carácter que se eliminará. Por lo tanto, la substring eliminada se ejecuta desde el índice de inicio hasta el índice final–1. Se devuelve el objeto StringBuffer resultante. El método deleteCharAt( ) elimina el carácter en el índice especificado por loc. Devuelve el objeto StringBuffer resultante.
Sintaxis:
StringBuffer delete(int startIndex, int endIndex) StringBuffer deleteCharAt(int loc)
Java
// Java Program to Illustrate StringBuffer class // via delete() and deleteCharAt() Methods // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { StringBuffer s = new StringBuffer("GeeksforGeeks"); s.delete(0, 5); // Returns forGeeks System.out.println(s); s.deleteCharAt(7); // Returns forGeek System.out.println(s); } }
forGeeks forGeek
Ejemplo 6: reemplazar()
Puede reemplazar un conjunto de caracteres con otro conjunto dentro de un objeto StringBuffer llamando a replace(). La substring que se reemplaza se especifica mediante los índices start Index y endIndex. Por lo tanto, se reemplaza la substring desde el índice inicial hasta el índice final–1. La string de reemplazo se pasa en str. Se devuelve el objeto StringBuffer resultante.
Sintaxis:
StringBuffer replace(int startIndex, int endIndex, String str)
Ejemplo
Java
// Java Program to Illustrate StringBuffer class // via replace() method // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { StringBuffer s = new StringBuffer("GeeksforGeeks"); s.replace(5, 8, "are"); // Returns GeeksareGeeks System.out.println(s); } }
GeeksareGeeks
Este artículo es una contribución de Lokesh Todwal. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA