यह एक प्रश्न है जो ज्यादातर शुद्ध जिज्ञासा (और कुछ समय मार रहा है) उत्पन्न हुआ। मैं विशेष रूप से कंक्रीटनेस के लिए जावा के बारे में पूछ रहा हूं।जावा में खाली स्ट्रिंग को संयोजित करते समय संकलन और रनटाइम पर क्या होता है?
अगर मैं कोई रिक्त स्ट्रिंग के साथ एक स्ट्रिंग (कोई भी स्ट्रिंग) को श्रेणीबद्ध स्मृति में, क्या होता है, उदाहरण के लिए:
String s = "any old string";
s += "";
मुझे पता है कि बाद में, रों की सामग्री को अभी भी "किसी भी पुराने स्ट्रिंग" हो जाएगा चूंकि एक खाली ASCII स्ट्रिंग को स्मृति में केवल एक ASCII शून्य के रूप में संग्रहीत किया जाता है (चूंकि, कम से कम जावा में, तार हमेशा शून्य-समाप्त होते हैं)। लेकिन मुझे यह जानकर उत्सुकता है कि क्या जावा (कंपाइलर? वीएम?) पर्याप्त अनुकूलन करता है यह जानने के लिए कि यह अपरिवर्तित होगा, और यह केवल उस निर्देश को बाइटकोड में छोड़ सकता है, या अगर संकलन और रन टाइम पर कुछ अलग होता है।
+1 - greatjustice – Alex
शांत के लिए । धन्यवाद! –
@mmyers: आपको यह इंगित करना चाहिए कि 1) उत्सर्जित बाइटकोड (सिद्धांत में) जावा कंपाइलर विशिष्ट हैं, और 2) जेआईटी कंपाइलर (सिद्धांत में) आगे अनुकूलित कर सकता है। –