String, StringBuffer y StringBuilder en Java


La clase String se utiliza en Java, como todos sabréis, para representar una cadena de caracteres inmutable, es decir, que no puede modificarse. Si utilizamos algún método que modifique la cadena, lo que ocurrirá en realidad es que se creará un nuevo objeto String.
Para cadenas de caracteres mutables se utilizaba hasta Java 5 la clase StringBuffer. Desde Java 5 tenemos una nueva opción, StringBuilder, que se diferencia de StringBuffer en que sus métodos no están sincronizados. Esto significa que StringBuilder ofrece mejor rendimiento queStringBuffer, aunque tenemos que tener algo más de cuidado al modificarlo si utilizamos varios threads.

En resumen:

  • Si el texto no va a cambiar: String
  • Si el texto puede cambiar y sólo vamos a tener un hilo trabajando con la cadena: StringBuilder.
  • Si el texto puede cambiar y vamos a tener más de un hilo trabajando con la cadena: StringBuffer.
Sin embargo hay alguna que otra excepción. Por ejemplo cuando se concatenan varios literales o constantes con el operador +, el compilador es suficientemente inteligente para crear un solo objetoString.
  1. public class EjemploString {  
  2.   public static void main(String[] args) {  
  3.     final String ESPACIO = " ";  
  4.     String s = "Hola" + ESPACIO + "Mundo";  
  5.   }  
  6. }  
También es interesante mencionar que la diferencia entre StringBuilder y StringBuffer se ha reducido en Java 6 y la diferencia será menor con Java 7, gracias a las nuevas mejoras en sincronización.

No hay comentarios:

Publicar un comentario