Append em StringBuffer  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

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!

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

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

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Essa StringBuffer ja me ajudou mto
Ele melhora mto performances quando vc ta trabalhando com Strings...

Show de bola

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

Lembrando que existe um tutorial aqui no GUJ sobre esse assunto

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Acabei de ler o tutorial
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

Valeu

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
Rafael Steil
Administrador
[Avatar]

Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline

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

Rafael

"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"

http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil
[Email] [WWW]
Grinvon
GUJ Master
[Avatar]

Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline

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

>> Inocêncio.
[MSN] [ICQ]
mtakeda
JavaBaby

Membro desde: 02/04/2004 19:45:37
Mensagens: 94
Offline

fmartins wrote: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!


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)
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team