Concatenar String..ql a melhor maneira?

10 respostas
P

Opa :smiley:

Tenho um looping que deve concatenar Strings. Ql a melhor maneira de fazer isso? Eu li que com o + não é nada recomendado pq ele cria um novo objeto em memória. Qual a melhor opção então?

[]'s

10 Respostas

recoma

StringBuilder e StringBuffer

ignacio83

Utilize a classe StringBuilder é a melhor opção.

TangZero

StringBuilder é a melhor maneira.

Porém essa classe só está disponivel apartir do Java 5.
É a melhor opção em ambientes ThreadSafe.
Outra alternativa é o StringBuffer, que é igual ao StringBuider, porém todos os seus métodos são synchronized, ou seja, é um pouco mais “lenta”.

StringBuilder builder = new StringBuilder();
builder.append("Hello");
builder.append(" ");
builder.append("World");
System.out.println(builder.toString());
P

Aqui estamos utilizando Java 1.4.

Vou usar a StringBuffer

Valeu :D:D

P

Depois que concatenar tudo, eu posso dar um .toString() para poder enviar para o método? É uma boa prática?

TangZero

Creio que seja a única opção para obter a String gerada.
:lol:

ajfilho

Ou pode usar .toString() ou passa o objeto direto.

Tipo:

public class TestStringBuilder { public static void main(String[] args) { StringBuilder builder = new StringBuilder(); builder.append("Olá "); builder.append("Augusto, "); builder.append("tudo "); builder.append("bem? "); System.out.println(builder); System.out.println(builder.toString()); } }

Output:

Olá Augusto, tudo bem? Olá Augusto, tudo bem?

Abraços!

TangZero

ajfilho:
Ou pode usar .toString() ou passa o objeto direto.

Abraços!

No caso de se fazer:

System.out.println(buffer); o método toString() do objeto será chamado de qualquer forma dentro do método println().

Ou seja, o jeito é toString(). Vai na fé!

P

Valeu feras :smiley:

rmendes08

Só completando, se possível, especifique o tamanho máximo do Buffer, caso contrário a realocação de memória pode prejudicar também o seu desempenho.

Criado 20 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 10
Participantes 6