मैं एक कक्षा में आया हूं जिसमें एक स्ट्रिंग शाब्दिक, "foo" के एकाधिक उपयोग शामिल हैं।अंतिम चर के बजाय समान स्ट्रिंग अक्षर का उपयोग करना?
मैं जानना चाहते हैं क्या, लाभ और प्रभाव इस दृष्टिकोण का उपयोग कर के बजाय अंतिम रूप स्ट्रिंग घोषित करने और अंतिम के साथ सभी शाब्दिक की जगह (ऑब्जेक्ट निर्माण, स्मृति के उपयोग और गति के मामले में) क्या कर रहे हैं है चर?
उदाहरण के लिए (हालांकि स्पष्ट रूप से नहीं एक असली शब्द उपयोग):
private static final String FINAL_STRING = "foo";
public void stringPrinter(){
for(int i=0;i<10;i++){
System.out.println(FINAL_STRING);
}
}
वर्सेज:
public void stringPrinter(){
for(int i=0;i<10;i++){
System.out.println("foo");
}
}
कौन सा बेहतर है और क्यों (यह मानते हुए स्ट्रिंग मान स्थिर रहेंगे) क्या है?
उपर्युक्त (दूसरा) उदाहरण 10 स्ट्रिंग ऑब्जेक्ट्स बनने के परिणामस्वरूप होगा या JVM का एहसास होगा कि वास्तव में केवल एक अक्षर का उपयोग किया जाता है, और एक संदर्भ बनाते हैं। यदि हां, तो क्या स्ट्रिंग को अंतिम के रूप में घोषित करने का कोई फायदा है (जैसा कि पहले उदाहरण में है)?
व्याख्या कोड स्ट्रिंग एक भी संदर्भ के साथ शाब्दिक की जगह करता है, करता है अभी भी लागू है कि अगर एक ही शाब्दिक एक से अधिक स्थानों में होता है:
public void stringPrinter(){
for(int i=0;i<5;i++){
System.out.println("foo"); // first occurence
System.out.println("foo"); // second occurence
}
}
मुझे लगता है कि पिछले डेवलपर ने स्थिरता का उपयोग करने पर शाब्दिक दोहराना चुना है, बस आलस्य की तरह लगता है। –
आश्चर्यजनक रूप से, वे वास्तव में निरंतर घोषित करते थे लेकिन इसका उपयोग नहीं करते थे। इसलिए मुझे संभावित कारण में दिलचस्पी क्यों थी। लेकिन सहमत हो गया, मुझे लगता है कि यह सिर्फ आलस्य था। – Mikaveli