SORU
5 Kasım 2010, Cuma


Nasıl Dize int dönüştürmek için?

String int tüm dönüşümler bu şekilde yapmış olduğu bir proje üzerinde çalışıyorum:

int i = 5;
String strI = ""   i;

Java aşina değilim. Sanırım bu olağan bir uygulama olduğunu ya da ters giden birşeyler var mı?

CEVAP
5 Kasım 2010, Cuma


Normal yollar Integer.toString(i) String.valueOf(i) olurdu.

Birleştirme çalışacak, ama sıradışı ve yazarın iki yöntem bilmiyor anlaşılacağı gibi kötü bir koku olabilir yukarıda (başka bildikleri ne olabilir?).

Java içine ilan kodu çevirir dizeleri (docs) ile kullanıldığında operatör için özel destek vardır:

StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(i);
String strI = sb.toString();

-derleme. Biraz daha az verimli (sb.append() Integer.toString() neyse ne yapabilirdi ki Integer.getChars(), arama biter), ama işe yarıyor.

Cevap Grodriguez yorum düzenleyinhayır, derleyiciyokbu durumda, boş bir dize - bak: optimize

simon@lucifer:~$ cat TestClass.java 
public class TestClass {
  public static void main(String[] args) {
    int i = 5;
    String strI = ""   i;
  }
}
simon@lucifer:~$ javac TestClass.java && javap -c TestClass
Compiled from "TestClass.java"
public class TestClass extends java.lang.Object{
public TestClass();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   iconst_5
   1:   istore_1

StringBuilder yeniden:

   2:   new #2; //class java/lang/StringBuilder
   5:   dup
   6:   invokespecial   #3; //Method java/lang/StringBuilder."<init>":()V

Boş dize ekleyin:

   9:   ldc #4; //String 
   11:  invokevirtual   #5; //Method java/lang/StringBuilder.append:
(Ljava/lang/String;)Ljava/lang/StringBuilder;

Tamsayı ekleme:

   14:  iload_1
   15:  invokevirtual   #6; //Method java/lang/StringBuilder.append:
(I)Ljava/lang/StringBuilder;

Son dize özü:

   18:  invokevirtual   #7; //Method java/lang/StringBuilder.toString:
()Ljava/lang/String;
   21:  astore_2
   22:  return
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • FND Films

    FND Films

    2 Mayıs 2006