StringBuffer en Java es una secuencia de caracteres mutable y segura para subprocesos, por lo que utilizando la clase StringBuffer puede crear objetos de cadena modificables.
En la cadena post en Java ya hemos visto que los objetos de cadena son inmutables, es decir, las cadenas son constantes; sus valores no se pueden cambiar después de que se crean. Debido a esta propiedad de inmutabilidad, cuando se usa un método de modificación de cadena como concatenación, lo que realmente sucede es que se crea y devuelve una nueva cadena que contiene el resultado de la operación. Esto puede llevar a la creación de muchos objetos de cadena intermedios si la cadena se modifica varias veces, lo que a su vez significa que se usa más memoria para estos objetos intermedios.
Usando el objeto StringBuffer puede evitar este problema de crear varios objetos, ya que es mutable. Como era de esperar, las operaciones principales en un StringBuffer son los métodos anexar e insertar.
- puntos Importantes acerca de Java StringBuffer
- Java StringBuffer Constructores
- Java StringBuffer ejemplos de método
puntos Importantes acerca de Java StringBuffer
Algunos de los puntos importantes acerca de la clase StringBuffer.
- StringBuffer en Java proporciona gran parte de la funcionalidad de la clase String con una desviación prominente de que StringBuffer es mutable.
- StringBuffer también es seguro para subprocesos, por lo que el objeto StringBuffer puede ser utilizado de forma segura por múltiples subprocesos. Los métodos de la clase StringBuffer se sincronizan cuando es necesario.
- Cada StringBuffer se crea con una capacidad. Mientras la longitud de la secuencia de caracteres contenida en el búfer de cadenas no exceda la capacidad, no es necesario asignar una nueva matriz de búfer interno. Si el búfer interno se desborda, se hace automáticamente más grande.
- También se proporciona la clase Java 5 onward StringBuilder, que es equivalente a la clase StringBuffer, pero diseñada para ser utilizada por un solo subproceso. StringBuilder es más rápido, ya que no realiza sincronización.
Constructores Java StringBuffer
Hay cuatro constructores en la clase StringBuffer.
- StringBuffer () – Construye un búfer de cadena sin caracteres y con una capacidad inicial de 16 caracteres.
StringBuffer sb = new StringBuffer();
- StringBuffer (capacidad int) – Construye un búfer de cadena sin caracteres y la capacidad inicial especificada.
StringBuffer sb = new StringBuffer(30);
- StringBuffer (Secuencia de caracteres seq) – Construye un búfer de cadena que contiene los mismos caracteres que la secuencia de caracteres especificada.
Aquí CharSequence es una interfaz implementada por CharBuffer, Segment, String, StringBuffer, StringBuilder. - StringBuffer (String str) – Construye un búfer de cadena inicializado al contenido de la cadena especificada.
StringBuffer sb = new StringBuffer("Hello");
Ejemplos de métodos Java StringBuffer
método anexar
el método anexar está sobrecargado para aceptar datos de cualquier tipo. Este método añade la representación de cadena del tipo de datos dado al búfer existente. El método anexar siempre agrega estos caracteres al final del búfer.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Hello"); sb.append(" "); sb.append("World").append(" ").append(123); System.out.println("Appended String- " + sb.toString()); }}
Output
Appended String- Hello World 123
Como puede ver en el ejemplo, append se usa con String como argumento y también int como argumento, ya que está sobrecargado para estos tipos de datos. También puede encadenar el método anexar como se hace en esta línea de código-
sb.append("World").append(" ").append(123)
Usando el método anexar también podemos comprobar la instrucción de que la cadena es inmutable, donde as StringBuffer es mutable. En el ejemplo se crea un objeto StringBuffer y luego se le añaden valores y la referencia devuelta se almacena en otro StringBuffer.
De la misma manera en que se crea una cadena y se añaden valores a ella, la cadena devuelta también es referenciada por otra Cadena.
Al comprobar la igualdad de dos referencias de StringBuffer, puede ver que ambas son iguales, mientras que para String ambas son diferentes.
public class StringLiteral {public static void main(String args) {// With StringBufferSystem.out.println("StringBuffer...");StringBuffer sb = new StringBuffer("Hello");sb.append(" ");StringBuffer newsb = sb.append("World").append(" ").append(123);if (sb == newsb) {System.out.println("Reference is same");}else {System.out.println("Reference is different");}// With StringSystem.out.println("String...");String str = "Hello";String newstr = str.concat(" ").concat("World").concat(" ").concat("123");if (str == newstr) {System.out.println("Reference is same");}else {System.out.println("Reference is different");}}}
Salida
StringBuffer...Reference is sameString...Reference is different
inserte el método
inserte el método está sobrecargado como para aceptar datos de cualquier tipo. Este método se utiliza para insertar la representación de cadena del tipo de datos dado en el búfer existente. El método insertar agrega los caracteres en un punto especificado.
el método insert toma dos argumentos, primero un entero que indica la posición donde se insertarán los caracteres en el búfer y el segundo argumento es el texto que se insertará.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Knp"); sb.insert(3, "Code"); System.out.println("String after insert- " + sb); }}
Salida
String after insert- KnpCode
métodos de longitud y capacidad
capacity()– Devuelve la capacidad actual del StringBuffer.
length () – Devuelve el número de caracteres de esta secuencia.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer(30); sb.append("Hello"); System.out.println("Capacity of StringBuffer- " + sb.capacity()); System.out.println("Length of StringBuffer- " + sb.length()); }}
Salida
Capacity of StringBuffer- 30Length of StringBuffer- 5
Como puede ver, StringBuffer se crea con la capacidad de 30, por lo que la capacidad se muestra como 30, donde el número de caracteres en el búfer es 5, por lo que la longitud se muestra como 5.métodos
delete y deleteCharAt
- delete (int start, int end): elimina los caracteres de una subcadena de esta secuencia. inicio que indica que el índice inicial es inclusivo, mientras que como fin que indica que el índice final es exclusivo.
- deleteCharAt (índice int): Elimina el carácter en la posición especificada en esta secuencia.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Hello"); sb.delete(1, 4); System.out.println("After deletion- " + sb); System.out.println("Length of StringBuffer- " + sb.length()); }}
Salida
After deletion- HoLength of StringBuffer- 2
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");sb.deleteCharAt(4);System.out.println("After deletion- " + sb);System.out.println("Length of StringBuffer- " + sb.length());}}
Salida
After deletion- HellLength of StringBuffer- 4
Java StringBuffer inversa método
invertir()– Invierte la existente StringBuffer.
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");System.out.println("Reversed- " + sb.reverse());}}
Salida
Reversed- olleH
Método de reemplazo de búfer de cadena Java
reemplazar(int start, int end, str de cadena): Reemplaza los caracteres de una subcadena de esta secuencia (de principio a fin– 1) con caracteres en la cadena especificada.
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");sb.replace(3, 5, "ena");System.out.println("String- " + sb);}}
Output
String- Helena
- Constructor de cadenas de Java Con Ejemplos de métodos
- Por qué String es Inmutable en Java
- Es Seguro para Subprocesos de cadenas de Java
- Método Java String intern ()
- Método Java String split ()
- Cadenas compactas en Java 9
- Buscar la Longitud de la cadena Sin Usar el método length() en Java
- Convertir Caracteres a Cadena y Cadena a Caracteres en Java
Eso es todo para el tema Java StringBuffer Con Ejemplos de Métodos. Si falta algo o tiene algo que compartir sobre el tema, escriba un comentario.
también Te puede gustar