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

  • ETrade Supply

    ETrade Suppl

    23 Temmuz 2011
  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • snookie77

    snookie77

    2 Mart 2006