Qual a diferenca entre concat() e append() ? Quando usar um ou outro?
9 respostas
douglasmorais
for(StringnameParameter:parameterNames){sql.append(request.getParameter(nameParameter)).append(","); }System.out.println(sql.toString().substring(0,(sql.toString().length()-1)).concat(" from tabela"));
nesse trecho de codigo, nao entendi pq nao foi colocado append no lugar do concat
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
Isso. E o ideal é nunca concatenar Strings dentro de whiles.
Use apenas o append do StringBuilder.
M
marcobiscaro21121 like
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.
drsmachado
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.
douglasmorais
Grande Viny
Sempre acudindo os pobres e oprimidos… rs
Valeu cara
M
marcobiscaro2112
drsmachado:
marcobiscaro2112:
Na prática, as duas linhas abaixo são equivalentes: