Cara normal adalah Integer.toString(i)
atau String.valueOf(i)
.
Rangkaian akan bekerja, tetapi tidak konvensional dan bisa menjadi bau yang buruk karena menunjukkan penulis tidak tahu tentang dua metode di atas (apa lagi yang mungkin mereka tidak tahu?).
Java memiliki dukungan khusus untuk operator + ketika digunakan dengan string (lihat dokumentasi ) yang menerjemahkan kode yang Anda kirim ke:
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(i);
String strI = sb.toString();
pada waktu kompilasi. Ini sedikit kurang efisien ( sb.append()
akhirnya memanggil Integer.getChars()
, yang memang Integer.toString()
akan dilakukan), tetapi berhasil.
Untuk menjawab komentar Grodriguez: ** Tidak, kompiler tidak mengoptimalkan string kosong dalam kasus ini - lihat:
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
Menginisialisasi StringBuilder:
2: new #2; //class java/lang/StringBuilder
5: dup
6: invokespecial #3; //Method java/lang/StringBuilder."<init>":()V
Tambahkan string kosong:
9: ldc #4; //String
11: invokevirtual #5; //Method java/lang/StringBuilder.append:
(Ljava/lang/String;)Ljava/lang/StringBuilder;
Tambahkan bilangan bulat:
14: iload_1
15: invokevirtual #6; //Method java/lang/StringBuilder.append:
(I)Ljava/lang/StringBuilder;
Ekstrak string terakhir:
18: invokevirtual #7; //Method java/lang/StringBuilder.toString:
()Ljava/lang/String;
21: astore_2
22: return
}
Ada proposal dan pekerjaan berkelanjutan untuk mengubah perilaku ini, ditargetkan untuk JDK 9.