स्ट्रिंग इंटर्निंग एक प्रक्रिया है जिसमें हर विशिष्ट स्ट्रिंग मान की एक सिंगल कॉपी स्टोर की जाती है। इसके अलावा, स्ट्रिंग्स को बदला भी नहीं जा सकता। इस तरह, स्ट्रिंग्स समान डेटा रख सकते हैं और साथ ही समान मेमोरी साझा कर सकते हैं। इस तरह, आवश्यक मेमोरी काफी कम हो जाएगी।
जब intern फंक्शन को कॉल किया जाता है:
यह दो स्ट्रिंग्स के बीच समानता की जांच करता है - चाहे स्ट्रिंग ऑब्जेक्ट स्ट्रिंग कॉन्स्टेंट पूल (SCP) में मौजूद है या नहीं।
यदि उपलब्ध है, तो स्ट्रिंग को पूल से प्राप्त करके वापस किया जाता है। अन्यथा, एक नया String ऑब्जेक्ट बनाया जाता है और पूल में जोड़ा जाता है। इस String ऑब्जेक्ट का एक संदर्भ भी वापस किया जाता है।
यदि दो स्ट्रिंग्स
aऔरbके लिए, a.intern() == b.intern() सत्य है यदि और केवल यदि a.equals(b) true वापस करता है।
आइए एक उदाहरण देखें:
उदाहरण
public class Demo{
public static void main(String[] args){
String s1 = new String("Its");
String s2 = s1.concat("sample");
String s3 = s2.intern();
System.out.println("ऑब्जेक्ट 2 और 3 की समानता की जांच:");
System.out.println(s2 == s3);
String s4 = "Its a sample";
System.out.println("ऑब्जेक्ट 3 और 4 की समानता की जांच:");
System.out.println(s3 == s4);
}
}
आउटपुट
ऑब्जेक्ट 2 और 3 की समानता की जांच: true ऑब्जेक्ट 3 और 4 की समानता की जांच: false
Demo नामक एक क्लास में मुख्य फंक्शन होता है। यहां String ऑब्जेक्ट्स के तीन इंस्टेंस परिभाषित किए जाते हैं, जिसमें दूसरी स्ट्रिंग पहली स्ट्रिंग के साथ एक अलग मान का कन्कैटिनेशन है। तीसरी स्ट्रिंग दूसरी स्ट्रिंग पर intern फंक्शन कॉल है। इन स्ट्रिंग्स की तुलना == ऑपरेटर का उपयोग करके की जाती है और परिणाम कंसोल पर प्रदर्शित किया जाता है।