Está en la página 1de 4

Búfer de cadena

Ir a la navegaciónIr a la búsqueda
En programación orientada a objetos, un búfer de cadena es una alternativa a
una cadena. Tiene la propiedad de ser alterable mediante inserciones al final,
mientras que una cadena normalmente es fija o inmutable.

Índice

 1En Java
o 1.1Teoría
o 1.2Implicaciones
 2En .NET
 3In other languages
 4Véase también
 5Enlaces externos

En Java[editar]
Teoría[editar]
La manera estándar de manipular texto en Java es usar su clase  String .
Toda  String  en Java es un objeto inmutable, lo que significa que su estado no
puede cambiar. Una  String  contiene un vector de caracteres. Toda manipulación
que implique un cambio en la cadena requiere la creación de una
nueva  String  (lo cual, a su vez, implica crear un nuevo vector de caracteres y
copiar el vector original). Esto sucede incluso si no se conserva el valor original de
la  String  o de  String  intermedias usadas para la manipulación.
Java provee una clase alternativa para manipular cadenas, llamada  StringBuffer .
Un  StringBuffer , al igual que una  String , contiene un vector para almacenar
caracteres. Sin embargo, aquel es mutable (su estado puede cambiar). Su vector
de caracteres no necesariamente está del todo lleno (en contraste con
una  String , cuyo vector siempre tiene la longitud exacta necesaria para su
contenido). Por tanto, es posible agregar caracteres, borrarlos o cambiar el estado
sin tener que crear un nuevo objeto (y sin tener que crear un nuevo vector y copiar
el anterior). La excepción a esto es cuando su vector ya no tiene la longitud
adecuada para almacenar su contenido; en este caso, se requiere crear uno
nuevo y copiar el antiguo contenido.
Por estas razones, Java manejaría una expresión como:

String nuevaString = unaString + unInt + unChar + unDouble;

así:
String nuevaString = (new
StringBuffer(unaString)).append(unInt).append(unChar).append(unDouble)).t
oString();

Implicaciones[editar]
Generalmente, un  StringBuffer  es más eficiente que una  String  para manipular
cadenas. Sin embargo, este no es necesariamente el caso, ya que el primero
requerirá recrear su vector de caracteres cuando se quede sin espacio.
Teóricamente, esto puede suceder tantas veces como nuevas  String  se
requieran, aunque es poco probable (y el programador puede proporcionar
indicaciones sobre la longitud para prevenir esto). De cualquier forma, el efecto no
suele ser notable en computadoras de escritorio modernas.
Además, las limitaciones de los vectores son inherentes a los  StringBuffer . Para
insertar o borrar caracteres en posiciones arbitrarias, hace falta mover secciones
enteras de vectores.
El método que hace atractivo a un  StringBuffer  en un entorno con bajo poder de
procesamiento consiste en usar mucha memoria, la cual es probable que también
escasee en un entorno tal. Este punto, sin embargo, es trivial, considerando el
espacio requerido para crear muchas instancias de  String  de manera de poder
procesarlas. Aparte, el  StringBuffer  puede optimizarse para “derrochar” tan poca
memoria como sea posible.
La clase StringBuilder, introducida en J2SE 5.0, difiere de  StringBuffer  en que
es asíncrona. Si solo un hilo de ejecución a la vez accede al objeto, usar
un  StringBuilder  es más eficiente que usar un  StringBuffer .
StringBuffer  y  StringBuilder  se incluyen en el paquete java.lang.

En .NET[editar]
La plataforma Microsoft .NET tiene una clase  StringBuilder  en su Base Class
Library (Biblioteca de Clases Básica).

In other languages[editar]
 En C++ y Ruby, la clase de cadena estándar ya
es mutable, con la posibilidad de cambiar sus
contenidos e insertar cadenas al final, etc., así
que no hace falta una clase separada para
cadenas mutables.
 En Objective-C (plataformas Cocoa/OpenStep),
la clase  NSMutableString  es la versión mutable
de la clase  NSString .
Véase también[editar]
 Análisis de algoritmos

Enlaces externos[editar]
 Los JavaDocs
de  StringBuffer ,  StringBuilder  y  String  (en
inglés).
 El código fuente de estas clases.
 Urban Performance Legends - un artículo que
discute sobre objetos inmutables en relación
al diseño orientado a objetos (en inglés).

 Proyectos Wikimedia

  Datos: Q7623905
Categorías: 
 Lenguaje de programación Java
 Estructura de datos
Menú de navegación
 No has accedido
 Discusión
 Contribuciones
 Crear una cuenta
 Acceder
 Artículo
 Discusión
 Leer
 Editar
 Ver historial
Buscar
Buscar Ir

 Portada
 Portal de la comunidad
 Actualidad
 Cambios recientes
 Páginas nuevas
 Página aleatoria
 Ayuda
 Donaciones
 Notificar un error
Herramientas
 Lo que enlaza aquí
 Cambios en enlazadas
 Subir archivo
 Páginas especiales
 Enlace permanente
 Información de la página
 Citar esta página
 Elemento de Wikidata
Imprimir/exportar
 Crear un libro
 Descargar como PDF
 Versión para imprimir
En otros idiomas
 English
Editar enlaces
 Esta página se editó por última vez el 16 abr 2020 a las 23:25.
 El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo d

También podría gustarte