Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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:
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