Manejo de String

lunes, 17 de mayo de 2010 ·

El manejo de cadenas de caracteres (string) en Java se hace usando las clases String o StringBuffer, ambas clases se usan para almacenar y manipular cadenas de caracteres. Sin embargo, hay una diferencia principal entre estas dos clases en la forma en la que son manejados por el sistema de tiempo de ejecución de Java.

La Clase String
El literal string se usa para almacenar valores string (cadena de caracteres). La clase String se usa para denotar un literal string. Se puede especificar strings al cerrar el texto dentro de comillas dobles, es importante notar la diferencia entre comillas simples y dobles: 'z' no es equivalente a “z”. La primera es el carácter z, la segunda es una cadena de caracteres (string) de una carácter. El siguiente código muestra la declaración de una variable String.

String str = “Hola”;

El fin de una cadena de caracteres es usualmente indicado por '\0'.

La clase String es inmutable, lo que significa que su valor no puede ser cambiado una vez que se crea un objeto del tipo String.

  • Se pueden usar métodos definidos en la clase String para hacer lo siguiente:
  • Examinar los diferentes caracteres que componen una cadena de caracteres.
  • Buscar una sub-vadena dentro de una cadena de caracteres.
  • Comparar dos cadenas de caracteres.
  • Crear otra cadena de caracteres que tengan todos los caracteres de la primera cadena de caracteres en mayúsculas o minúsculas.

Dos cadenas de caracteres pueden ser concatenadas usando el operador “+”. Como String es inmutable, esta concatenación es actualmente implementada usando internamente la clase StringBuffer por Java.

String uno = “abcde”;
String dos = “fhgij”;
String tres;
tres = uno + dos;
System.out.println(tres);

El objeto tres es creado y tiene el valor abcdefghij.

La clase StringBuffer
La clase StringBuffer es similar a la clase String y se usa para denotar a un literal string. Sin embargo, StringBuffer es mutable, a diferencia de la clase String. Esto significa que los valores almacenados por objetos de esta clase pueden ser cambiados. StringBuffer juega un rol vital en la concatenación de cadenas de caracteres, actualmente se implementa a través de la creación de objetos StringBuffer, y luego se usa el método append() sobre los obejtos creados. Esto es una alternativa mejor que usar el operador “+” sobre dos objetos String.

Los objetos StringBuffer se pueden usar en aplicaciones multihilos, ya que los métodos que operan en estos objetos pueden ser sincronizados para evitar la ocurrencia del interbloqueo.

La clase StringBuilder
Esta clase proporciona un API compatible de StringBuffer, pero no se garantiza su bajo escenarios de sincronización. Fue diseñada para usarla como el reemplazo de StringBuffer en donde el stringsea utilizado por un solo hilo (generalmente es el caso). En lo posible, se recomienda que esta clase sea utilizada preferiblemente en lugar de StringBuffer pues será más rápida en la mayoría de los casos.

Las operaciones principales de StringBuilder son los métodos append e insert, cuando son sobrecargados para aceptar datos de cuallquier tipo. Cada uno convierte con eficacia un dato dado a un string y añade o inserta los caracteres de ese string al string en construcción. El método append agrega siempre estos caracteres al final de la secuencia de caracteres en construcción; el método insert agrega los caracteres en un punto especificado.

Por ejemplo, si x se refiere a un objeto StringBuilder que contiene “lava”, después de la llamada x.append(“manos”) del método haría que la secuencia construida contenga “lavamanos”, mientras que x.insert(4,”nos”) alteraría la construcción de la secuencia para contener “lavanosmanos”.

Las instancias StringBuilder no son seguras para el uso con múltiples hilos. Si se necesita o requiere la sincronización entonces se recomienda que StringBuffer sea utilizado.

Diferencias entre String, StringBuilder y StringBuffer
String es inmutable mientras que StringBuffer y StringBuilder pueden cambiar sus valores.

La única diferencia entre StringBuffer y StringBuilder es que StringBuilder es asíncrono mientras que StringBuffer es síncrono. Por lo tanto cuando una aplicación necesita funcionar solamente con un hilo entonces es mejor utilizar StringBuilder. StringBuilder es más eficiente que StringBuffer.

Criterios para elegir entre String, StringBuffer y StringBuilder:
  • Si el texto no va a cambiar usar la clase String porque un objeto String es inmutable.
  • Si el texto puede cambiar y es accedido solamente por un hilo, utilizar un StringBuilder porque StringBuilder no es síncrono.
  • Si el texto puede cambiar, y es accedido por múltiples hilos, utilizar un StringBuffer porque StringBuffer es síncrono.

0 comentarios:

Publicar un comentario

Tu comentario es importante

Entradas Recientes Entradas Antiguas data:homeMsg

CodigoByte

Codigo QR

Etiquetas

Blogumulus by Roy Tanck and Amanda Fazani

Twitter

Seguir codigobyte en Twitter

Twitter Actualizar

    sigueme en Twitter

    Participa

    Java Twitter

    ¿Cúal es la extensión usada para guardar los archivos fuente Java?

    Mangoos

    Mangoos
    http://mangoosbuscador.wordpress.com/

    Anunciantes

    Se escribe con...

    Se escribe con...