Avatar billede kaydk Nybegynder
30. oktober 2005 - 14:51 Der er 13 kommentarer og
2 løsninger

Integer til String hvordan?

Jeg har en int variabel, hvis værdi jeg ønsker konverteret til en String, hvorledes gøres dette? Min kode som ikke kan kompiles ser således ud;

int source1_int, dest1_int;
String dest1_str;

...
...
...


if(source1_int > dest1_int)
{
    dest1_int = dest1_int+24;
    dest1_str = (String) dest1_int;
}
Avatar billede kaydk Nybegynder
30. oktober 2005 - 14:58 #1
Nå jeg fandt ud af det selv
...
dest1_str = Integer.toString(dest1_int);
Avatar billede simonvalter Praktikant
30. oktober 2005 - 14:59 #2
String s = String.valueOf(i);
Avatar billede simonvalter Praktikant
30. oktober 2005 - 14:59 #3
sørme så :)
Avatar billede kalp Novice
30. oktober 2005 - 15:36 #4
if(source1_int > dest1_int)
{
    dest1_int = dest1_int+24;
    dest1_str = ""+ dest1_int;
}
Avatar billede kaydk Nybegynder
30. oktober 2005 - 16:12 #5
Tak for svarene, men jeg har selv fundet en løsning.
Avatar billede arne_v Ekspert
30. oktober 2005 - 17:12 #6
Avatar billede kalp Novice
30. oktober 2005 - 18:42 #7
kaydk >> må man evt. se din løsning?
Avatar billede arne_v Ekspert
30. oktober 2005 - 18:48 #8
jeg tror han henviser til 14:58:32
Avatar billede simonvalter Praktikant
30. oktober 2005 - 20:32 #9
jeg vil mene at ""+int ikke er særligt pænt at gøre... det viser ikke din hensigt særligt tydelig og så er det heller ikke særligt effektivt.
Det svarer til at gøre:
new String{Builder|Buffer}().append("").append(String.valueOf(5)).toString()

// String.valueOf(i);
public void test1();
  Code:
  0:  iconst_5
  1:  istore_1
  2:  iload_1
  3:  invokestatic    #2; //Method java/lang/String.valueOf:(I)Ljava/lang/String;
  6:  astore_2
  7:  return
// ""+i
public void test2();
  Code:
  0:  iconst_5
  1:  istore_1
  2:  new    #3; //class java/lang/StringBuilder
  5:  dup
  6:  invokespecial  #4; //Method java/lang/StringBuilder."<init>":()V
  9:  ldc    #5; //String
  11:  invokevirtual  #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  14:  iload_1
  15:  invokevirtual  #7; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
  18:  invokevirtual  #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
  21:  astore_2
  22:  return

}
Avatar billede arne_v Ekspert
30. oktober 2005 - 20:38 #10
""+ er et unødvendigt hack

jeg synes dog at Integer.toString er pænere end String.valueOf
Avatar billede simonvalter Praktikant
30. oktober 2005 - 20:39 #11
ja jeg kan heller ikke rigtigt se hvorfor den er der.
Avatar billede kalp Novice
30. oktober 2005 - 21:50 #12
""+ ser jeg blot som en genvej.

det er måske ikke så kønt, men det gør vel i bund og grund det samme.
Avatar billede arne_v Ekspert
30. oktober 2005 - 22:24 #13
det er en af de genveje som går igennem tulipan beddet

:-)

[se Simons post for de tekniske detaljer]
Avatar billede kalp Novice
30. oktober 2005 - 23:41 #14
Kommentar: simonvalter
30/10-2005 20:39:38

Den er der også i C#
Hvis det ikke er særlig pænt så er det underligt, at de også har den mulighed med.
Avatar billede simonvalter Praktikant
31. oktober 2005 - 03:36 #15
kalp jeg mente at de har designet api'erne så du både kan bruge Type.toString(x); og String.valueOf(x); Hvor den sidste bare kalder den første.

Der er måske simple tilfælde hvor du har en konstant hvor du vil benytte det:

1 + 2 + " bla"

eller

private static final int a = 5;

a + " bla"

der kan compileren optimere så den laver en ldc direkte og det vil faktisk vil være mere effektivt... men jeg vil mene der er langt imellem brugen af det.
Og fordi Java eller C# giver dig muligheden betyder det ikke du skal bruge det... det findes massere af bad practices i alle sprog (se http://thedailywtf.com/ :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester