2012-03-10 16 views
5

चूंकि स्ट्रिंग्स जावा में अपरिवर्तनीय हैं, इसलिए मैं तर्क-कम स्ट्रिंग कन्स्ट्रक्टर का उपयोग क्यों करना चाहूंगा और ऑब्जेक्ट बनाऊंगा?जावा में, स्ट्रिंग एस = नया स्ट्रिंग() कोई भी उपयोग है?

चर s मेरे लिए उपयोगी कैसे है मैं करता हूँ के बाद:

String s = new String(); 

उत्तर

7

new String() कोई रिक्त स्ट्रिंग है। यह एक विधि से वापसी मूल्य हो सकता है, उदाहरण के लिए, यदि आपके पास वापस लौटने के लिए और कुछ दिलचस्प नहीं है। शाब्दिक "" का उपयोग करना शायद बेहतर है क्योंकि शाब्दिक खाली स्ट्रिंग मान पहले से ही इंटर्न किया जाएगा।

4

यह एक खाली स्ट्रिंग है, "" के बराबर है। जावाडोक से:

एक नव निर्मित स्ट्रिंग ऑब्जेक्ट को आरंभ करता है ताकि यह एक खाली वर्ण अनुक्रम का प्रतिनिधित्व करता हो। ध्यान दें कि इस कन्स्ट्रक्टर का उपयोग अनावश्यक है क्योंकि स्ट्रिंग्स अपरिवर्तनीय हैं।

संपादित करें:

शब्द बराबर के उपयोग के गरीब पसंद है। के सभी स्पष्ट करने के लिए निम्नलिखित true रहे हैं:

"" == "" 
"" != new String() 
"".equals(new String()) 
+0

"समकक्ष" ... लेकिन "समान"? 'नया स्ट्रिंग() ==" "'? –

+0

@pst 'नया स्ट्रिंग() ==" "' गलत होगा। वे उसी ऑब्जेक्ट का प्रतिनिधित्व नहीं करते हैं क्योंकि स्ट्रिंग ऑब्जेक्ट इंटर्न पूल से नहीं आता है। – Jivings

3

तार के बाद से जावा में अपरिवर्तनीय हैं, मैं क्यों तर्क कम स्ट्रिंग निर्माता का उपयोग करें और एक वस्तु का निर्माण करना चाहते हैं? यदि आप एक स्ट्रिंग है कि "" को equal लेकिन यह समान नहीं था बनाने के लिए चाहता था

एकमात्र कारण होगा। और फिर भी यह संभावना है कि आप new String(str) पर कॉल करेंगे जहां str खाली स्ट्रिंग पर वापस आ गया है।

वास्तविक कारण यह है कि निर्माता बिल्कुल प्रदान नहीं किया गया है। हालांकि यह कोई नुकसान नहीं करता है, और शुरुआत में इसे रखने का कोई कारण हो सकता है (जावा को जावा कहा जाता था)।

+0

दिलचस्प तथ्य: .NET में यह फ़ॉर्म नहीं है (नो-एर्ग स्ट्रिंग कन्स्ट्रक्टर) –

+0

@pst - केवल दिलचस्प है अगर आपको यह एक दिलचस्प सवाल लगता है। मेरा विचार यह है कि ज्यादातर बेकार विधि/कन्स्ट्रक्टर की उपस्थिति (या नहीं) व्यावहारिक परिप्रेक्ष्य से अप्रासंगिक है। –

+0

@StephenC: मुझे बेकार विधियों या रचनाकारों को विचलित करने लगता है। जब मैं एक नई एपीआई देखता हूं तो मैं इसे जितना संभव हो उतना आसान बनाना चाहता हूं। बेकार तरीके मुझे अधिक दस्तावेज पढ़ते हैं, और मुझे उनका उपयोग करने के लिए * नहीं * तय करना होगा। –

संबंधित मुद्दे