Usando a classe StringBuilder
Um pequeno programa pode criar muitos objetos String rapidamente. Por exemplo, quantas você acha que esse pedaço de código cria?
10: String alpha = "";
11: for(char current = 'a'; current <= 'z'; current++)
12: alpha += current;
13: System.out.println(alpha);
O String vazio na linha 10 é instanciado e, em seguida, a linha 12 acrescenta um "a" . Contudo, porque o objeto String é imutável, um novo objeto String é atribuído a alpha e o “” Objeto se torna elegível para coleta de lixo. Na próxima vez que passar pelo loop, alpha será atribuído um novo objeto String , "ab" , e o objeto "a" se torna elegível para o lixo coleção. A próxima iteração atribui alfa a "abc" e o objeto "ab" se torna elegível para coleta de lixo e assim por diante.
Esta seqüência de eventos continua, e após 26 iterações através do loop, um total de 27 objetos são instanciados, a maioria dos quais são imediatamente elegíveis para coleta de lixo.
Isso é muito ineficiente. Felizmente, o Java tem uma solução. A classe StringBuilder cria uma String sem armazenar todos esses valores temporários de String . Ao contrário da classe String , O StringBuilder não é imutável.
15: StringBuilder alpha = new StringBuilder();
16: for(char current = 'a'; current <= 'z'; current++)
17: alpha.append(current);
18: System.out.println(alpha);
Na linha 15, um novo objeto StringBuilder é instanciado. A chamada para append() na linha 17 adiciona um caractere ao objeto StringBuilder a cada vez através do loop for e anexa o valor corrente até o final do alpha. Este código reutiliza o mesmo StringBuilder sem criando uma string temporária a cada vez.
Nesta seção, veremos a criação de um StringBuilder, métodos comuns e uma comparação com StringBuffer.