Exemplo ilustrativo:
class ReverseString { public static String reverseIt(String inicial) { int i, tam = inicial.length(); StringBuffer dest = new StringBuffer(tam); for (i = (tam - 1); i >= 0; i--) { dest.append(inicial.charAt(i)); } return dest.toString(); } }
O método da classe StringBuffer append() pode ser usado para adicionar caracteres ao fim de uma string, como no exemplo acima. Se o caracter concatenado causa o StringBuffer crescer além de sua capacidade, o StringBuffer aloca mais memória. Como alocação de memória é uma operação relativamente cara, se esta for minimizada, o código resultante será mais eficiente.
No exemplo acima, o construtor default StringBuffer() poderia ter sido usado, criando um buffer de tamanho indeterminado. Porém, é mais eficiente especificar o tamanho do buffer, uma vez que, o mesmo já é conhecido. Caso contrário, seria necessário alocar mais memória a cada concatenação de um caractere ao buffer.
Geralmente é conveniente ou necessário converter um objeto para String porque precisa-se usar métodos que só aceitam valores String. Por exemplo,
System.out.println() não aceita StringBuffers como parâmetro, então uma StringBuffer precisa ser convertida para String antes de ser impressa.