O que é melhor String ou StringBuilder ou StringBuffer?

11 respostas
Raff

Pessoal gostaria de saber a diferença entre esses Classes grato desde já é para que cada uma serve . :slight_smile: obrigado perdoe a minha ignorancia!

11 Respostas

recoma

http://www.google.com.br/search?hl=pt-BR&q=diferença+entre+stringbuffer+stringbuilder&btnG=Pesquisar&meta=

A

String -> A mais usada… porem toda instancia q vc cria dela… é inalteravel !! o texto q voce colaka no: String s = “texto” :nunk mudara… c vc quiser mudar esse texto vc tera q criar uma nova string!! com o conteudo da primeira mais oq voce deseja colocar!!
todos os métodos retornam algo… e nao alteram a instancia!!

StringBuffer == StringBuilder porem a StringBuilder é mais rapida pois os métodos dela nao sao sincronizados!!

Se usa StringBuilder quando deseja a manipulaçao de textos maiores sem o uso d Threds !! e a StringBuffer o mesmo só que com o uso de Threds

LPJava

analise a diferença de cada e veja se aonde vc vai usar qual deles te dar suporte a sua aplicacao.
String = tem o caso de objetos perdidos na memoria
StringBuilder - é mais rapido que o buffer por nao ter metodos sincronizados
StringBuffer - aqui qdo vc vai trabalhar com acesso simultaneo eh necessario usar a sincronizacao para manter a consistencia no estado do objeto…
cada caso eh um…
nao posso dizer… use StringBuilder é o melhor que tem… os outros vc pode usar mais o Builder ele é o cara… isso eu seria louco heeh… mas o Builder so existe a partir da versao 1.5 :smiley: so para lembrar.

Raff

Ai pessoal valew mesmo :slight_smile: agradeço :slight_smile:

davidbuzatto

[size=18]?[/size]

LPJava
String s = new String("a");
String b=s;
s="lopes;
//objeto perdido o primeiro, s ta referenciado a um novo objeto

so lembrar que String sao imutaveis e qdo trabalhos com essa classe dar ideia que mutavel… mais no fundo nao eh… ate pq ela tem o modificador final :smiley:
No caso do exemplo anterior b aponta para o primeiro objeto que s referenciava… apos a criacao de um novo objeto ele nao sofre alteracao nenhuma. é o mesmo disso tb.

String n="carro";
n.concat("azul"); // isso aqui eh perdido na memoria ng ta referenciando

esse assunto ta no cap 5 do livro da kathy para SCJP 5.0 - 310-055 :smiley:
flw!

davidbuzatto

Kra, mas qualquer objeto que perde a referência fica “perdido” e é trabalho do coletor de lixo destruí-lo… O problema, creio eu, é o problema de que cada vez que vc precisa de uma String nova a JVM tem que criar várias Strings para ir criando um Objeto novo, e não o problema de fcarem Strings perdidas…

Depois da execução da linha abaixo vão ficar 5 Strings no pool, mas o coletor de lixo vai remover as que não estiverem sendo referenciadas, tem o pool de Strings, ai eu já nãp sei se elas vão ficar lá mesmo assim.

String s = "a" + "b" + "c" + "d";
LPJava

assim segundo a kathy ao usar StringBuilder ou buffer nao temos objetos perdido devido essas classes opera em cima do objeto que o chamou… e String como sao imutaveis… a cada nova String eh um novo objeto… bom acho q nao me expressei bem é ± isso ai…

L
String teste = teste;

teste = teste + 1;

Decompila esse código e você terá uma surpresa.

Verá que o compilador converte em StringBuffer e depois retorna para String.

[]'s
L
String teste = teste;

teste = teste + 1;

Decompila esse código e você terá uma surpresa.

Verá que o compilador converte em StringBuffer e depois retorna para String.

[]'s </blockquote>

bem sacado isso do compilador tranformar…

fmeyer

leandroqbs:

bem sacado isso do compilador tranformar…

so ta fazendo o trabalho que o code monkey deveria ter feito :roll:

Criado 8 de maio de 2007
Ultima resposta 9 de mai. de 2007
Respostas 11
Participantes 8