Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में String intern() मेथड की भूमिका क्या है?

स्ट्रिंग Java में एक क्लास है जो कैरेक्टर्स के सीक्वेंस को स्टोर करती है, यह java.lang पैकेज से संबंधित है। एक बार स्ट्रिंग ऑब्जेक्ट बनाने के बाद आप उन्हें मॉडिफाई नहीं कर सकते (इम्यूटेबल)।

स्टोरेज

सभी स्ट्रिंग ऑब्जेक्ट्स हीप एरिया में एक अलग मेमोरी लोकेशन में स्टोर होते हैं जिसे स्ट्रिंग कॉन्स्टेंट पूल के नाम से जाना जाता है।

जब भी आप एक स्ट्रिंग वैल्यू डिफाइन करते हैं, JVM दिए गए वैल्यू के साथ स्ट्रिंग कॉन्स्टेंट पूल में एक स्ट्रिंग ऑब्जेक्ट बनाता है। इसलिए, यदि आप उपरोक्त प्रोग्राम चलाते हैं तो स्ट्रिंग कॉन्स्टेंट पूल में दो स्ट्रिंग वैल्यूज़ बनती हैं।

Java में String intern() मेथड की भूमिका क्या है?

intern() मेथड

यह मेथड यूनिक स्ट्रिंग वैल्यूज़ के पूल से वर्तमान स्ट्रिंग का वैल्यू लौटाता है। जब भी आप किसी विशेष स्ट्रिंग पर इस मेथड को इनवोक करते हैं, यदि स्ट्रिंग कॉन्स्टेंट पूल में पहले से ही इसके बराबर एक स्ट्रिंग मौजूद है (Object क्लास की equals मेथड के अनुसार), तो इसे लौटाया जाएगा। यदि नहीं, तो वर्तमान स्ट्रिंग को स्ट्रिंग कॉन्स्टेंट पूल में जोड़ा जाता है और इसका रेफरेंस लौटाया जाता है।

यानी यदि आप समान कंटेंट वाली दो स्ट्रिंग्स पर इस मेथड को इनवोक करते हैं तो यह गारंटी है कि वे समान मेमोरी शेयर करती हैं।

यह मेथड कई डुप्लिकेट वैल्यूज़ के मामले में मेमोरी ऑक्यूपेशन को कम करने के लिए काम आता है।

उदाहरण

निम्नलिखित में हम समान कंटेंट वाली दो स्ट्रिंग्स बना रहे हैं (new कीवर्ड का उपयोग करके) और उनकी तुलना "==" ऑपरेटर का उपयोग करके कर रहे हैं। हालांकि दोनों ऑब्जेक्ट्स का वैल्यू समान है, चूंकि वे समान ऑब्जेक्ट (मेमोरी) को रेफर नहीं करते, परिणाम false होगा।

public class InternExample { 
    public static void main(String args[]) { 
        String str1 = new String("Hello"); 
        str1 = str1.intern(); 
        String str2 = "Hello"; 
        str2 = str2.intern(); 
        System.out.println(str1.equals(str2)); 
    } 
}

आउटपुट

false

लेकिन, यदि आप तुलना करने से पहले दोनों ऑब्जेक्ट्स पर intern मेथड को इनवोक करते हैं, चूंकि यह सुनिश्चित करता है कि यदि उनका कंटेंट समान है तो दोनों ऑब्जेक्ट्स समान मेमोरी शेयर करते हैं, परिणाम true होगा।

public class InternExample { 
    public static void main(String args[]) { 
        String str1 = new String("Hello"); 
        str1 = str1.intern(); 
        String str2 = new String("Hello"); 
        str2 = str2.intern(); 
        System.out.println(str1 == str2); 
    } 
}

आउटपुट

true

  1. Java में StringIndexOutOfBoundsException क्या है? Java में StringIndexOutOfBoundsException क्या है?

    स्ट्रिंग्स का उपयोग Java में वर्णों के अनुक्रम को संग्रहीत करने के लिए किया जाता है, उन्हें ऑब्जेक्ट्स के रूप में माना जाता है। java.lang पैकेज का String क्लास एक स्ट्रिंग का प्रतिनिधित्व करता है। आप स्ट्रिंग को या तो new कीवर्ड का उपयोग करके (किसी अन्य ऑब्जेक्ट की तरह) बना सकते हैं, या लिटरल को मान

  1. - Java में StringWriter का महत्व क्या है?

    StringWriter क्लास Writer क्लास का एक सबक्लास है और यह स्ट्रिंग को आउटपुट स्ट्रीम में लिखता है। एक स्ट्रिंग लिखने के लिए, यह कैरेक्टर स्ट्रीम स्ट्रिंग को एक स्ट्रिंग बफ़र में एकत्र करता है और फिर एक स्ट्रिंग का निर्माण करता है। StringWriter का बफ़र डेटा के अनुसार स्वचालित रूप से बढ़ता है। StringWrit

  1. Java में setBounds() विधि का उपयोग क्या है? Java में setBounds() विधि का उपयोग क्या है?

    लेआउट प्रबंधक जोड़े गए घटकों की स्थिति और आकार को स्वचालित रूप से तय करने के लिए उपयोग किए जाते हैं। लेआउट प्रबंधक की अनुपस्थिति में, घटकों की स्थिति और आकार को मैन्युअल रूप से सेट करना पड़ता है। ऐसी स्थिति में setBounds() विधि का उपयोग स्थिति और आकार सेट करने के लिए किया जाता है। घटकों की स्थिति औ