37.    StringBuffer (clase) java.lang.StringBuffer

A diferencia de la clase estándar String, StringBuffer permite trabajar con cadenas de caracteres modificables. Ver también “StringBuilder”, que es más rápida.

El siguiente ejemplo muestra dos métodos para construir un objeto que un listado de N números separados por comas.

public class UsandoStringBuffer {

 

  private static String metodo1(int n) {

    String resultado = "";

    for (int i = 0; i < n; i++)

      resultado+= i + ", ";

    return resultado;

  }

 

  private static String metodo2(int n) {

    StringBuffer buffer = new StringBuffer();

    for (int i = 0; i < n; i++)

      buffer.append(i).append(", ");

    return buffer.toString();

  }

 

  public static void main(String[] argumentos) {

    int n = Integer.parseInt(argumentos[0]);

    long t1, t2;

 

    t1 = System.currentTimeMillis();

    metodo1(n);

    t2 = System.currentTimeMillis();

    System.out.println("método 1: " + (t2 - t1) + "ms");

 

    t1 = System.currentTimeMillis();

    metodo2(n);

    t2 = System.currentTimeMillis();

    System.out.println("método 2: " + (t2 - t1) + "ms");

  }

}       

 

La diferencia en tiempos de ejecución es notoria:

$ java UsandoStringBuffer 100

método 1: 0ms

método 2: 0ms

$ java UsandoStringBuffer 1000

método 1: 47ms

método 2: 0ms

$ java UsandoStringBuffer 10000

método 1: 17218ms

método 2: 16ms

 

El tiempo exacto que tarda en ejecutarse el programa depende de cada ordenador y de qué más programas hay en ejecución en un momento dado. Lo importante es la proporción de tiempos, que es claramente favorable al uso de StringBuffer. La diferencia, inapreciable cuando hay pocos objetos que manejar, se torna apabullante cuando el número de objetos crece.

Ver “StringBuilder”: similar; pero más rápida.

Temas relacionados

Las Bibliotecas de Java