String
passo a passo Relembre que as String
s são imutáveis, ou seja, não existem métodos que permitam modificar a sequência de carateres que compõe uma String
.
Por isso, quando queremos construir uma String
a pouco e pouco, começando com uma dada sequência de carateres e acrescentando, passo a passo, novos carateres, podemos optar por fazer algo do estilo:
String s = "Blah";
for (int i = 1; i <= 10; i++) {
s = s + " blah";
}
System.out.println(s);
A seguinte linha será escrita no standard output:
xxxxxxxxxx
Blah blah blah blah blah blah blah blah blah blah blah
Mas esta não é a melhor forma de o fazer. Porquê?
Relembre que quando atribuímos um valor (objeto) a uma variável de tipo não primitivo, o conteúdo da variável não será o objeto propriamente dito mas uma referência para ele. O conteúdo da variável s
após a execução da instrução
xxxxxxxxxx
String s = "Blah";
é representado por
Como consequência, a execução das instruções acima
s
;s
De cada vez que concatenamos s
com a String
" blah" estamos na verdade a criar um novo objeto do tipo String
, e é esse novo objeto que passa a ser referenciado por s
.
Ver imagem abaixo; uma seta com um traço significa que a referência contida na variável s
já não é aquela.
Para evitar construir todos aqueles objetos intermédios (que não serão usados de novo), usamos um objeto que é especialista em construção de String
s – um objeto do tipo StringBuilder
.
Anterior: 8.2. Geração de valores aleatórios
Seguinte: 8.4. A classe StringBuilder