E lá vai eu denovo, acho q vaum me mandar praquele lugar, akele mesmo, o google, mas…
Ae, eu sei q para “ajuntar” string dah pra fazer assim normal:
str1 = “a”;
str2 = “b”;
str3 = “c”;
[code]str1 = str1 + str3;
//e o jeito aconselhável:
str1 = str1.concat(str3);
[/code]
e como fica:
[code]str1 = str2 + str3;
str1 = str1.concat(str2) + str1.concat(str3); //Assim???
[/code]
e isso:
[code]str1 = str2 + str1;
str1 = str1.concat(str2) + str1.concat(str1);
[/code]
_fs
Abril 12, 2005, 12:07pm
#2
Quando você “soma” Strings, se não me engano 3 objetos são criados para fazer a concatenação.
Execute este teste simples:
public static void main( String args[] ) {
long initTime = System.currentTimeMillis();
String s = "a";
for( int i = 0; i < 100000; i++ )
s += "a";
System.out.println( "Somando strings: " + ( System.currentTimeMillis() - initTime ) + "ms.");
initTime = System.currentTimeMillis();
String s2 = "a";
for( int i = 0; i < 100000; i++ )
s2.concat( "a" );
System.out.println( "Usando concat() strings: " + ( System.currentTimeMillis() - initTime ) + "ms." );
}
}
Use StringBuffer (JDK 1.4) ou StringBuilder (5.0+) quando for concatenar uma String diversas vezes, como num loop, por exemplo. Em outros lugares, use o + mesmo.
cv1
Abril 12, 2005, 12:22pm
#4
E, so pra responder a pergunta, voce pode fazer s1.concat(s2).concat(s3)
, mas isso eh soh um jeito mais chato de escrever s1 + s2 + s3
Resumindo, se for usar poucas “junções” de strings vai no mais(+) mesmo
senaum se atire no google e aprenda StringBuffer
_fs
Abril 12, 2005, 4:27pm
#6
cv, tem certeza que é mesma coisa cara? Roda o trexo que eu postei para ver a diferença.
Lógico que não é a mesma coisa, LIPE, porque seu código usando concat joga a concatenação fora toda vez enquanto que o primeiro realmente faz s “crescer”.
Altere seu segundo for para:
s2 = s2.concat("a");
e nos conte o que acontece
smota
Abril 12, 2005, 4:38pm
#8
Neste tópico vale uma lida: http://java.sun.com/developer/JDCTechTips/2002/tt0305.html
e http://www.javapractices.com/Topic4.cjp
Sobre usar + pra pequenas concatenações ao invés de criar um StringBuffer isso é só pra simplicidade do código já que pra performance se você fizer direito dá no mesmo:
[quote=Concatenation and the + Operator]String cat = “cat”;
System.out.println(“con” + cat + “enation”);
The above example compiles to:
String cat = “cat”;
System.out.println(new StringBuffer().append(“con”).
append(cat).append(“enation”).toString());
[/quote]
Cuidado!
Em laços,
for (int i =0; i < 10000; i++) a+ = "s"
o código fica assim
for (int i =0; i < 10000; i++) {
sb = new StringBuffer(a);
sb.append("s");
a = sb.toString();
}
e o ideal serial
sb = new StringBuffer(a);
for (int i =0; i < 10000; i++) {
sb.append("s");
}
a = sb.toString();
E por favor, fora de laços, não seja “chato”: use o operador +
Oloco meu, valeu pela dica, isso é o q queria saber.
louds
Abril 12, 2005, 8:17pm
#12
[quote=israelwm]E lá vai eu denovo, acho q vaum me mandar praquele lugar, akele mesmo, o google, mas…
[/quote]
Ou para outro ainda pior http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html
Leitura facil, tranquila e recreativa. Todas as suas dúvidas sobre String vão desaparecer… :lol:
[quote=louds][quote=israelwm]E lá vai eu denovo, acho q vaum me mandar praquele lugar, akele mesmo, o google, mas…
[/quote]
Ou para outro ainda pior http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html
Leitura facil, tranquila e recreativa. Todas as suas dúvidas sobre String vão desaparecer… :lol: [/quote]
huauhauhhuahua, naum tudo menos o site da sun, é um saco…