Clase StringBuffer en Java

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)

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()

Sintaxis: 

public int codePointAt(int index)

Sintaxis: 

public int codePointBefore(int index)

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()

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)

Sintaxis: 

public int offsetByCodePoints(int index, int codePointOffset) 

Sintaxis: 

public void setCharAt(int index, char ch)

Sintaxis: 

public void setLength(int newLength)

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);
    }
}
Producción

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);
    }
}
Producción

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);
    }
}
Producción: 

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);
    }
}
Producción

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);
    }
}
Producción

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);
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *