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

Java में String क्लास के intern() मेथड का उपयोग कब करें?

String क्लास का intern() मेथड Java में स्ट्रिंग डुप्लिकेशन समस्याओं से निपटने के लिए उपयोग किया जा सकता है। intern() का उपयोग करके हम डुप्लिकेट स्ट्रिंग इंस्टेंसेस द्वारा खपत की गई बहुत सारी मेमोरी बचा सकते हैं। एक स्ट्रिंग डुप्लिकेट है यदि इसमें另一个 स्ट्रिंग के समान कंटेंट है लेकिन यह अलग मेमोरी लोकेशन्स पर कब्जा कर सकती है।

हम जानते हैं कि JVM परफॉरमेंस के लिए स्ट्रिंग लिटरल्स के लिए एक अलग हीप मेमोरी रखता है। एक बार जब हम स्ट्रिंग लिटरल घोषित करते हैं तो यह इस पूल में जाएगा और यदि दूसरा वेरिएबल उसी लिटरल वैल्यू के साथ असाइन किया जाता है, तो इसे नया ऑब्जेक्ट बनाने और हीप में स्टोर करने के बजाय पूल से पिक किया जाएगा। लेकिन यदि स्ट्रिंग new कंस्ट्रक्टर का उपयोग करके घोषित की जाती है, तो लिटरल पूल में मौजूद होने पर भी एक नया ऑब्जेक्ट बनाया जाएगा। इससे बचने के लिए और JVM को पूल से लिटरल लेने के लिए मजबूर करने के लिए हम intern() मेथड का उपयोग करते हैं।

Java डिफ़ॉल्ट रूप से सभी स्ट्रिंग्स को स्वचालित रूप से इंटर्न करता है। intern() मेथड का उपयोग new String() वाले स्ट्रिंग्स में किया जा सकता है ताकि उनकी तुलना == ऑपरेटर द्वारा की जा सके।

उदाहरण

public class StringInternClassTest { 
    public static void main(String[] args) { 
        String s1 = "Tutorix"; 
        String s2 = "Tutorix"; 
        String s3 = new String("Tutorix"); 
        final String s4 = s3.intern(); 
        String s5 = "?Tutorix".substring(1); 
        String s6 = s5.intern(); 
        System.out.println(s1 == s2); 
        System.out.println(s2 == s3); 
        System.out.println(s3 == s4); 
        System.out.println(s1 == s3); 
        System.out.println(s1 == s4); 
        System.out.println(s1 == s5); 
        System.out.println(s1 == s6); 
        System.out.println(s1.equals(s2)); 
        System.out.println(s2.equals(s3)); 
        System.out.println(s3.equals(s4)); 
        System.out.println(s1.equals(s4)); 
        System.out.println(s1.equals(s3)); 
    } 
}

आउटपुट

true 
false 
false 
false 
true 
false 
true 
true 
true 
true 
true 
true

s1 == s2 true (दोनों लिटरल, समान पूल रेफरेंस)। s3.intern() पूल से कैनोनिकल रेफरेंस लौटाता है, इसलिए s1 == s4 true। equals() हमेशा कंटेंट तुलना करता है इसलिए सभी true।

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

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

  1. Java में pack() मेथड का उपयोग कब कर सकते हैं? Java में pack() मेथड का उपयोग कब कर सकते हैं?

    pack() मेथड Java में Window क्लास में परिभाषित है और यह फ्रेम को इस तरह आकार देता है कि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हैं। pack() मेथड का एक विकल्प setSize() या setBounds() मेथड्स को कॉल करके फ्रेम आकार को स्पष्ट रूप से स्थापित करना है। सामान्य तौर पर, pack() मेथड का उपयोग setSiz

  1. - Java में एब्सट्रैक्ट क्लास कब उपयोग करें और इंटरफेस कब उपयोग करें?

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