Curso de Verão de Java



As classes String e StringBuffer

A linguagem Java provê duas classes que armazenam e manipulam caracteres: String para strings imutáveis e StringBuffer para strings mutáveis. A classe String, provida para strings constantes, deve ser usada quando se deseja que o valor da string não seja alterado.

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();
	}
}

Pelo fato de serem constantes, Strings são tipicamente mais baratas que StringBuffers e podem ser compartilhadas. Portanto, devem ser usadas quando forem apropriadas.

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.


Julianne Pepeu, jfsp@di.ufpe.br
Última edição em 14 de janeiro de 1996.
URL: http://www.di.ufpe.br/~java/verao/aula4/comparacao.html