Append em StringBuffer

Pessoal, alguem que já teve em situações
que precisou manipular Strings ???
Aqui vai um exemplo pequeno de como
A classe StringBuffer ajuda esse processo!

public class StringAppend {
public static void main (String args[])
{
//Utilizando String
System.out.println(“Utilizando String”);
String str = new String();
java.util.Date dtIn = new java.util.Date();
System.out.println(dtIn);

   //Realiza um loop de 5000 passos acrescentado no final da String o valor do contador(i)
   for (long i=0; i<5000; i++)
   {
       str += i;
   }
   java.util.Date dtFin = new java.util.Date();
   System.out.println(dtFin);

     
   //Utilizando StringBuffer 
   System.out.println("Utilizando StringBuffer");
   StringBuffer strB = new StringBuffer();
   java.util.Date dtInB = new java.util.Date();
   System.out.println(dtInB);


   for (long i=0; i<5000; i++)
   {
       strB.append(i);
   }
   java.util.Date dtFinB = new java.util.Date();
   System.out.println(dtFinB);

}
}

Quem tiver a oportunidade de testar … verá o quanto é eficiente!!!
Isso acontece porquê o método append da Classe StringBuffer adiciona simplesmente no final da String o elemento,
Já com a Classe String pura, ele a cada acrescento do elemento percorre toda String, isso em operações simples não é percebido, mas quando se trata de operações com strings muito grandes, agiliza e muito o tempo de processamento!

Realmente, a classe StringBuffer ajuda muito no desempenho, principalmente na manipulação de grandes Strings.

Essa StringBuffer ja me ajudou mto :smiley:
Ele melhora mto performances quando vc ta trabalhando com Strings…

Show de bola :smiley: :smiley: :smiley:

Lembrando que existe um tutorial aqui no GUJ sobre esse assunto :slight_smile:

Rafael

Acabei de ler o tutorial :lol:
Gostei também do tutorial …
Realmente não sabia que já havia algo aqui no GUJ explicando …
Mas de qualquer forma … acho q não podemos esquecer desses detalhes
que às vezes passamos despercebidos sobre a existência da StringBuffer… principalmente quem está iniciando agora :wink:

Valeu :!:

Por isso que conhecer a API eh MUITO importante. Sempre ha coisas interessantes para serem usadas.

Rafael

Além do mais, economiza a memória!

[quote=“fmartins”]Isso acontece porquê o método append da Classe StringBuffer adiciona simplesmente no final da String o elemento,
Já com a Classe String pura, ele a cada acrescento do elemento percorre toda String, isso em operações simples não é percebido, mas quando se trata de operações com strings muito grandes, agiliza e muito o tempo de processamento![/quote]

Talvez eu esteja enganado, mas acho que a razão dessa diferença é outra. Com a classe String pura ele não percorre toda a string a cada iteração. Ele cria um novo objeto String e muda a referência para esse objeto. Daí a diferença no desempenho. O loop está criando vários objetos na memória (e dá-lhe coletor de lixo!). No StringBuffer, isso não acontece. É sempre o mesmo objeto (quer dizer, nem sempre, mas aí já é outra história! rs)