अनुशंसित, 2019

संपादक की पसंद

जावा में स्ट्रिंग और स्ट्रिंगबर्गर क्लास के बीच अंतर

स्ट्रिंग और StringBuffer दोनों ही वे वर्ग हैं जो स्ट्रिंग्स पर काम करते हैं। StringBuffer वर्ग स्ट्रिंग का सहकर्मी वर्ग है। स्ट्रिंग क्लास की वस्तु निश्चित लंबाई की होती है। StringBuffer वर्ग का उद्देश्य बढ़ने योग्य है। स्ट्रिंग और स्ट्रिंगर के बीच मूल अंतर यह है कि "स्ट्रिंग" वर्ग का उद्देश्य अपरिवर्तनीय है । "स्ट्रींगबफ़र" श्रेणी की वस्तु परस्पर परिवर्तनशील है

तुलना चार्ट

तुलना के लिए आधारतारStringBuffer
बुनियादीस्ट्रिंग ऑब्जेक्ट की लंबाई निर्धारित है।StringBuffer की लंबाई बढ़ाई जा सकती है।
परिवर्तनस्ट्रिंग वस्तु अपरिवर्तनीय है।StringBuffer ऑब्जेक्ट परस्पर भिन्न होता है।
प्रदर्शनयह संघनन के दौरान धीमा होता है।यह संघनन के दौरान तेज होता है।
यादअधिक स्मृति का उपभोग करता है।याददाश्त कम होती है।
भंडारणस्ट्रिंग लगातार पूल।हीप मेमोरी।

स्ट्रिंग की परिभाषा

"स्ट्रिंग" जावा में एक वर्ग है। कक्षा स्ट्रिंग का उद्देश्य निश्चित लंबाई का है, और याद रखने के लिए सबसे महत्वपूर्ण, स्ट्रिंग कक्षा का उद्देश्य "अपरिवर्तनीय" है। एक बार जब आप स्ट्रिंग ऑब्जेक्ट को इनिशियलाइज़ कर लेते हैं, तो आप उस ऑब्जेक्ट को फिर से संशोधित नहीं कर सकते। स्ट्रिंग के वर्ग का उद्देश्य स्ट्रिंग स्थिर पूल में संग्रहीत है।

आइए हम पहले यह समझें कि, जब भी आप कोई स्ट्रिंग बनाते हैं; आप टाइप स्ट्रिंग का ऑब्जेक्ट बनाते हैं। स्ट्रिंग स्थिरांक भी स्ट्रिंग ऑब्जेक्ट हैं।

 System.out.println ("हेलो दिस इज टेकपीक्स सॉल्यूशन"); 

उपरोक्त कथन में, स्ट्रिंग "हैलो दिस इज टेकपीक्स सॉल्यूशन" एक स्ट्रिंग स्थिरांक है।

अब एक उदाहरण की मदद से स्ट्रिंग ऑब्जेक्ट की उत्परिवर्तन को समझते हैं।

 स्ट्रिंग str = नया स्ट्रिंग ("टेकीपिक्स"); str.concat ( "समाधान"); system.out.println (str); // आउटपुट टेकीपिक्स 

उपरोक्त कोड में, मैंने दो स्ट्रिंग्स "टेक्पिक्स" और "सॉल्यूशन" को समेटने की कोशिश की। जैसा कि हम जानते हैं कि जब भी कोई स्ट्रिंग बनाई जाती है तो इसका मतलब है कि स्ट्रिंग का प्रकार बनाया जाता है। इसलिए, स्ट्रिंग "टेकपीक्स" एक ऑब्जेक्ट बनाता है, जिसका संदर्भ स्ट्रिंग ऑब्जेक्ट "str" ​​को सौंपा गया है। इसके बाद, मैंने स्ट्रिंग के साथ एक और स्ट्रिंग "सॉल्यूशन" को "टीकपिक्स" को क्लास स्ट्रिंग के "कॉन्कटैट ()" विधि का उपयोग करके समेटने की कोशिश की।

जैसा कि स्ट्रिंग ऑब्जेक्ट अपरिवर्तनीय हैं, स्ट्रिंग "Teppix" के लिए कोई संशोधन नहीं किया गया है और नया स्ट्रिंग "समाधान" स्ट्रिंग स्थिर पूल में एक और ऑब्जेक्ट बनाता है। लेकिन, ऑब्जेक्ट "सॉल्यूशन" का संदर्भ किसी भी ऑब्जेक्ट द्वारा नहीं पकड़ा जाता है, इसलिए ऑब्जेक्ट सॉल्यूशन का संदर्भ खो जाता है, हालांकि यह अभी भी स्ट्रिंग निरंतर पूल में मौजूद है। जैसा कि ऑब्जेक्ट Teckpix में कोई संशोधन नहीं किया गया है, जब मैं उस ऑब्जेक्ट को प्रिंट करता हूं जिसे मैंने पहले Teckpix का संदर्भ दिया था, तो स्ट्रिंग "Teckpix" को ही प्रिंट करेगा।

स्ट्रिंगबर्गर की परिभाषा

वर्ग "स्ट्रिंगबफ़र" वर्ग "स्ट्रिंग" का सहकर्मी वर्ग है। StringBuffer वर्ग स्ट्रिंग्स को अधिक कार्यक्षमता प्रदान करता है। StringBuffer वर्ग का ऑब्जेक्ट परिवर्तनशील है जो कि इसकी वस्तु को संशोधित किया जा सकता है। StringBuffer ऑब्जेक्ट की लंबाई बढ़ने योग्य है। आप स्ट्रिंग शाब्दिक के बीच में अक्षर या सबस्ट्रिंग सम्मिलित कर सकते हैं जो StringBuffer ऑब्जेक्ट या इसके अंत में असाइन किया गया है। स्ट्रिंगबफ़र 16 अतिरिक्त वर्णों के लिए स्थान आवंटित करता है जब कोई विशिष्ट लंबाई का अनुरोध नहीं किया जाता है।

आइए एक उदाहरण की मदद से स्ट्रिंगर बफ़र ऑब्जेक्ट की उत्परिवर्तन को समझते हैं:

 स्ट्रिंगबफ्रे एसबी = नया स्ट्रिंगरफ़र ("टेकीपिक्स"); Sb.append ( "समाधान"); system.out.println (Sb); // आउटपुट टेकीपिक्स सॉल्यूशन 

जैसा कि हम जानते हैं कि StringBuffer वस्तु परस्पर है। विधि परिशिष्ट () StringBuffer ऑब्जेक्ट Sb को प्रारंभ में संशोधित करता है, जिसके लिए ऑब्जेक्ट "Teckpix" का संदर्भ पहले सौंपा गया है। विधि एपेंड () नए स्ट्रिंग शाब्दिक "समाधान" को जोड़ता है, स्ट्रिंग शाब्दिक "टेकपीक्स" के अंत तक। अब जब मैं ऑब्जेक्ट Sb प्रिंट करता हूँ तो यह संशोधित स्ट्रिंग ऑब्जेक्ट "Teckpix Solutions" को प्रिंट करेगा।

स्ट्रिंग और स्ट्रिंगर के बीच महत्वपूर्ण अंतर

  1. स्ट्रिंग ऑब्जेक्ट की लंबाई निर्धारित है, लेकिन आवश्यकता होने पर स्ट्रिंगरबफ़र की ऑब्जेक्ट की लंबाई बढ़ाई जा सकती है।
  2. स्ट्रिंग ऑब्जेक्ट अपरिवर्तनीय है अर्थात यह ऑब्जेक्ट फिर से पुन: असाइन नहीं किया जा सकता है जबकि, स्ट्रिंगबफ़र की वस्तु परस्पर है।
  3. स्ट्रिंग ऑब्जेक्ट प्रदर्शन में धीमा है, जबकि, स्ट्रिंगबफ़र ऑब्जेक्ट तेज़ है।
  4. स्ट्रिंग ऑब्जेक्ट अधिक मेमोरी की खपत करता है, जबकि स्ट्रिंगर ऑब्जेक्ट्स कम मेमोरी का उपभोग करता है।
  5. स्ट्रिंग ऑब्जेक्ट्स को एक स्थिर पूल में संग्रहीत किया जाता है, जबकि, स्ट्रिंगबफ़र ऑब्जेक्ट्स को ढेर मेमोरी पर संग्रहीत किया जाता है।

निष्कर्ष:

स्ट्रिंग स्ट्रिंग की तुलना में स्ट्रिंगरबफ़र ऑब्जेक्ट्स स्ट्रिंग्स को अधिक कार्यक्षमता प्रदान करते हैं। इसलिए, स्ट्रिंग के बजाय स्ट्रिंगर के साथ काम करना बेहतर होता है।

Top