सटीक नियम जावा भाषा विशिष्टता में बाहर से लिखे गए हैं, §5.1.11. String Conversion
उन नियमों के अनुसार, "str" + bool
के बराबर है समग्र अभिव्यक्ति का मूल्यांकन किया जाता है। JLS §15.18.1. String Concatenation Operator + से:
कार्यान्वयन बनाने और फिर एक मध्यवर्ती स्ट्रिंग वस्तु की निकालने से बचने के लिए एक ही चरण में रूपांतरण और संयोजन प्रदर्शन करने के लिए चुन सकते हैं। बार-बार स्ट्रिंग कॉन्सटेनेशन के प्रदर्शन को बढ़ाने के लिए, जावा कंपाइलर StringBuffer
कक्षा या एक समान तकनीक का उपयोग कर सकता है ताकि अभिव्यक्ति के मूल्यांकन द्वारा बनाए गए इंटरमीडिएट String
ऑब्जेक्ट्स की संख्या को कम किया जा सके।
आदिम प्रकारों के लिए, एक कार्यान्वयन सीधे एक आदिम प्रकार से एक स्ट्रिंग में परिवर्तित करके एक रैपर ऑब्जेक्ट के निर्माण को अनुकूलित कर सकता है।
उदाहरण के लिए, मेरी संकलक निम्नलिखित के साथ:
Code:
0: iconst_1
1: istore_1
2: getstatic #59 // Field java/lang/System.out:Ljava/io/PrintStream;
5: new #166 // class java/lang/StringBuilder
8: dup
9: ldc #168 // String the value of bool is :
11: invokespecial #170 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
14: iload_1
15: invokevirtual #172 // Method java/lang/StringBuilder.append:(Z)Ljava/lang/StringBuilder;
18: invokevirtual #176 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
21: invokevirtual #69 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
24: return
इस लेख को पढ़ें: http://www.znetdevelopment.com/blogs/2009/04/06/java-string-concatenation/ –