सामान्य तरीके Integer.toString(i)
या होंगे String.valueOf(i)
।
संघ कार्य करेगा, लेकिन यह अपरंपरागत है और यह एक बुरा गंध हो सकता है क्योंकि यह सुझाव देता है कि लेखक ऊपर दिए गए दो तरीकों के बारे में नहीं जानता है (और क्या वे नहीं जान सकते हैं?)।
जावा के पास तार के साथ उपयोग किए जाने पर + ऑपरेटर के लिए विशेष समर्थन होता है ( प्रलेखन देखें ) जो आपके द्वारा पोस्ट किए गए कोड का अनुवाद करता है:
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(i);
String strI = sb.toString();
संकलन-समय पर। यह थोड़ा कम कुशल है ( sb.append()
कॉलिंग समाप्त होता है Integer.getChars()
, जो कि Integer.toString()
वैसे भी होता है), लेकिन यह काम करता है।
ग्रोग्रिगेज की टिप्पणी का जवाब देने के लिए: ** नहीं, कंपाइलर इस मामले में खाली स्ट्रिंग का अनुकूलन नहीं करता है - देखो:
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
स्ट्रींगबुइर्स्टाइल को प्रारंभिक करें:
2: new #2; //class java/lang/StringBuilder
5: dup
6: invokespecial #3; //Method java/lang/StringBuilder."<init>":()V
खाली स्ट्रिंग संलग्न करें:
9: ldc #4; //String
11: invokevirtual #5; //Method java/lang/StringBuilder.append:
(Ljava/lang/String;)Ljava/lang/StringBuilder;
पूर्णांक को जोड़ें:
14: iload_1
15: invokevirtual #6; //Method java/lang/StringBuilder.append:
(I)Ljava/lang/StringBuilder;
अंतिम स्ट्रिंग निकालें:
18: invokevirtual #7; //Method java/lang/StringBuilder.toString:
()Ljava/lang/String;
21: astore_2
22: return
}
नहीं है एक प्रस्ताव और चल रहे काम इस व्यवहार, JDK 9 के लिए लक्षित बदलने के लिए।