Ficaria bem mais fácil assim:
int numero = 10;
String teste = ""+numero+"";
Valeu pessoal.
[quote="dgomesbr"]Ficaria bem mais fácil assim:
int numero = 10;
String teste = ""+numero+"";
Valeu pessoal.
se vc sabia a solucao, pq veio aqui perguntar?
e outra: te interna...
Descobri essa solução agora irmão, se eu soubesse com certeza não teria perguntado.
Descobri essa solução em outro lugar seu prisioneiro de Javafree. Tenho outros Foruns para me comunicar.
Se eu dependesse de um ignorante como vc "miojo" estaria a ver navios.
[quote="Edinei Manica"]
int teste = 10;
String newString = teste.toString();
nossa, q compilador Java aceita isso?!?!?! o meu nao aceita, de CERTEZA!!!!
[quote="dgomesbr"]Descobri essa solução agora irmão, se eu soubesse com certeza não teria perguntado.
Descobri essa solução em outro lugar seu prisioneiro de Javafree. Tenho outros Foruns para me comunicar.
Se eu dependesse de um ignorante como vc "miojo" estaria a ver navios.
Ele só falou brincando !
a tá, me desculpe "miojo".
[quote="dgomesbr"]Ficaria bem mais fácil assim:
int numero = 10;
String teste = ""+numero+"";
Valeu pessoal.
sua solucao, alem de deselegante, tem péssima performance...
faça isso zilhoes de vezes e vc vai ver q eh o pior codigo pra se fazer conversao... concatenacao de literal string com primitivo gera um bytecode que chama StringBuffer...
public class Teste {
public void foo() {
int x = 10;
String s = "" + x + "";
}
public void bar() {
int x = 10;
String s = Integer.toString(x);
}
}
depois de compilar, execute o comando [b]javap -c Teste[/b] e as instrucoes em cada metodo serao apresentadas... :)
foo() --> 28 instrucoes (utiliza StringBuffer e dah append())
bar() --> 8 instrucoes (chama metodo static de Integer)
separe em duas classes e veja o tamanho do bytecode gerado... :) o tamanho em bytes do .class
Resultado do [b]javap[/b]
D:\>javap -c Teste
Compiled from "Teste.java"
public class Teste extends java.lang.Object{
public Teste();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
[color=darkred:930645eff4]public void foo();
Code:
0: bipush 10
2: istore_1
3: new #2; //class StringBuffer
6: dup
7: invokespecial #3; //Method java/lang/StringBuffer."<init>":()V
10: ldc #4; //String
12: invokevirtual #5; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
15: iload_1
16: invokevirtual #6; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer;
19: ldc #4; //String
21: invokevirtual #5; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
24: invokevirtual #7; //Method java/lang/StringBuffer.toString:()Ljava/lang/String;
27: astore_2
28: return[/color:930645eff4]
[color=darkblue:930645eff4]public void bar();
Code:
0: bipush 10
2: istore_1
3: iload_1
4: invokestatic
#8; //Method java/lang/String.valueOf:(I)Ljava/lang/String;
7: astore_2
8: return[/color:930645eff4]
}
experimente esse codigo pra testar a performance:
public class Teste {
public static void foo() {
int x = 10;
String s = "" + x + "";
}
public static void bar() {
int x = 10;
String s = Integer.toString(x);
}
public static void main(String a[]) {
long ops = 4000000;
System.out.println("Total de operacoes por metodo: "+ops);
for(int i=0;i<5;i++) {
System.out.println();
teste(ops);
}
}
public static void teste(long ops) {
long begin = System.currentTimeMillis();
for(long i=0;i<ops;i++)
bar();
System.out.println("Time for bar(): "+(System.currentTimeMillis() - begin) + "ms");
begin = System.currentTimeMillis();
for(long i=0;i<ops;i++)
foo();
System.out.println("Time for foo(): "+(System.currentTimeMillis() - begin) + "ms");
}
}
falou miojo, em 2005 eu testo isso que vc mandou.
vc é um gênio.
Assunto respondido e fechado.