Normal yollar Integer.toString(i)veya olur String.valueOf(i).
Birleştirme işe yarayacaktır, ancak alışılmadık bir durumdur ve yazarın yukarıdaki iki yöntem hakkında bilmediğini önerdiği için kötü bir koku olabilir (başka ne bilmiyor olabilirler?).
Java, yayınladığınız kodu çeviren dizelerle (+ belgelere bakın ) kullanıldığında + operatör için özel desteğe sahiptir :
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(i);
String strI = sb.toString();
derleme zamanında. Biraz daha az verimlidir ( sonuçta sb.append()arama Integer.getChars(), bu Integer.toString()zaten ne yapardı), ama işe yarıyor.
Grodriguez'ın yorumuna cevap vermek için: ** Hayır, derleyici bu durumda boş dizeyi optimize etmez - bak:
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'ı başlatın:
2: new #2; //class java/lang/StringBuilder
5: dup
6: invokespecial #3; //Method java/lang/StringBuilder."<init>":()V
Boş dizeyi ekleyin:
9: ldc #4; //String
11: invokevirtual #5; //Method java/lang/StringBuilder.append:
(Ljava/lang/String;)Ljava/lang/StringBuilder;
Tamsayıyı ekleyin:
14: iload_1
15: invokevirtual #6; //Method java/lang/StringBuilder.append:
(I)Ljava/lang/StringBuilder;
Son dizeyi çıkarın:
18: invokevirtual #7; //Method java/lang/StringBuilder.toString:
()Ljava/lang/String;
21: astore_2
22: return
}
Orada bir öneri JDK 9 için hedeflenmektedir Bu davranışı değiştirmek için çalışmaları devam eden.