class ReverseString {
public static String reverseIt(String source) {
int i, len = source.length();
StringBuffer dest = new StringBuffer(len);
for (i = (len - 1); i >= 0; i--) {
dest.append(source.charAt(i));
}
return dest.toString();
}
}
El método reverseIt() utiliza el método append() de StringBuffer para añadir un carácter al final de la cadena de destino: dest. Si la adicción de caracteres hace que aumente el tamaño de StringBuffer más allá de su capacidad actual, el StringBuffer asigna más memoria. Como la asignación de memoria es una operación relativamente cara, debemos hacer un código más eficiente inicializando la capacidad del StringBuffer de forma razonable para el primer contenido, así minimizaremos el número de veces que se tendrá que asignar memoria.
Por ejemplo, el método reverseIt() construye un StringBuffer con una capacidad inicial igual a la de la cadena fuente, asegurándose sólo una asignación de memoria para dest.
La versión del método append() utilizado en reverseIt() es sólo uno de los métodos de StringBuffer para añadir datos al final de un StringBuffer. Existen varios métodos append() para añadir varios tipos, como float, int, boolean,e incluso objetos, al final del StringBuffer. El dato es convertido a cadena antes de que tenga lugar la operación de adicción.
Algunas veces, podríamos querer insertar datos en el medio de un StringBuffer. Se puede hacer esto utilizando el método insert(). Este ejemplo ilustra cómo insertar una cadena dentro de un StringBuffer.StringBuffer sb = new StringBuffer("Bebe Caliente!"); sb.insert(6, "Java "); System.out.println(sb.toString());Este retazo de código imprimerá:Bebe Java Caliente!Con muchos métodos insert() de StringBuffer se puede especificar el índice anterior donde se quiere insertar el dato. En el ejemplo anterior: "Java " tiene que insertarse antes de la 'C' de "Caliente". Los índices empiezan en 0, por eso el índice de la 'C' es el 6. Para insertar datos al principio de un StringBuffer se utiliza el índice 0. Para añadir datos al final del StringBuffer se utiliza un índice con la longitud actual del StringBuffer o append().
Otro modificador muy útil de StringBuffer es setCharAt(), que selecciona un carácter en la posición especificada del StringBuffer. setCharAt() es útil cuando se reutiliza un StringBuffer.