Qual a diferenca entre concat() e append() ? Quando usar um ou outro ?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
douglasmorais
JavaChild
[Avatar]

Membro desde: 29/10/2007 14:05:58
Mensagens: 141
Offline



nesse trecho de codigo, nao entendi pq nao foi colocado append no lugar do concat
douglasmorais
JavaChild
[Avatar]

Membro desde: 29/10/2007 14:05:58
Mensagens: 141
Offline

Acho que entendi.

O append() eh metodo da classe StringBuilder.
E o concat() eh metodo da classe String.
Na hora do println a sql vira string novamente, dai, se quiser somar outro pedaco de string tem que usar o concat().

Eh isso mesmo ?
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Isso. E o ideal é nunca concatenar Strings dentro de whiles.
Use apenas o append do StringBuilder.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

String é um objeto imutável. Quando você chama o método concat, uma nova String é criada (e isso é muito lento se comparado ao StringBuilder).

StringBuilder serve justamente para concatenar dados (Strings, números, etc.) de uma forma rápida. O método dessa classe que faz isso é o append.

Quando você executa o System.out.println passando um objeto como parâmetro, ele automaticamente chama o método toString dele. Na prática, as duas linhas abaixo são equivalentes:


No seu código, você cria um StringBuilder, converte ele para String, chama o método substring, converte o StringBuilder para String de novo (para resgatar o tamanho) e chama o método concat de String (que é lento). Seu código não está tão otimizado quanto poderia estar.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

marcobiscaro2112 wrote:
Na prática, as duas linhas abaixo são equivalentes:


Na prática, a segunda linha lançará exception, pois métodos são chamados com os () ao final e os parâmetros requeridos entre eles.

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
douglasmorais
JavaChild
[Avatar]

Membro desde: 29/10/2007 14:05:58
Mensagens: 141
Offline

Grande Viny

Sempre acudindo os pobres e oprimidos... rs

Valeu cara
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

drsmachado wrote:
marcobiscaro2112 wrote:
Na prática, as duas linhas abaixo são equivalentes:


Na prática, a segunda linha lançará exception, pois métodos são chamados com os () ao final e os parâmetros requeridos entre eles.

Sim, esqueci dos parênteses na chamada do método, mas você entendeu a ideia.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Alguns detalhes que podem ajudar:

A classe StringBuilder tem os métodos length() e deleteCharAt(int index) que podem ser usados para remover o último caractere.

Assim você pode fazer outro append com o nome da tabela e só converter para String quando não for fazer mais nenhuma modificação.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
douglasmorais
JavaChild
[Avatar]

Membro desde: 29/10/2007 14:05:58
Mensagens: 141
Offline

[b]Valeu
drsmachado
GUJ Expert

Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline

marcobiscaro2112 wrote:
drsmachado wrote:
marcobiscaro2112 wrote:
Na prática, as duas linhas abaixo são equivalentes:


Na prática, a segunda linha lançará exception, pois métodos são chamados com os () ao final e os parâmetros requeridos entre eles.

Sim, esqueci dos parênteses na chamada do método, mas você entendeu a ideia.

Com certeza, só estava fazendo meu papel de ser chato.

Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".

Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team