स्ट्रिंग अपरिवर्तनीय है इसका मतलब है कि हम ऑब्जेक्ट को स्वयं नहीं बदल सकते हैं, लेकिन हम ऑब्जेक्ट के संदर्भ को बदल सकते हैं। स्ट्रिंग को अंतिम रूप दिया जाता है ताकि अन्य इसे विस्तारित न कर सकें और इसकी अपरिवर्तनीयता को नष्ट कर सकें।
- सुरक्षा पैरामीटर्स को आमतौर पर नेटवर्क कनेक्शन, डेटाबेस कनेक्शन यूआरएल, उपयोगकर्ता नाम/पासवर्ड इत्यादि में स्ट्रिंग के रूप में दर्शाया जाता है। यदि यह परिवर्तनीय था, तो इन पैरामीटर को आसानी से बदला जा सकता था।
- सिंक्रनाइज़ेशन और समवर्ती स्ट्रिंग को अपरिवर्तनीय बनाना स्वचालित रूप से उन्हें थ्रेड सुरक्षित बनाता है जिससे सिंक्रनाइज़ेशन मुद्दों को हल किया जाता है।
- कैशिंग जब कंपाइलर हमारे स्ट्रिंग ऑब्जेक्ट्स को ऑप्टिमाइज़ करता है, तो ऐसा लगता है कि यदि दो ऑब्जेक्ट्स का एक ही मान (a ="टेस्ट", और b ="टेस्ट") है और इस प्रकार हमें केवल एक स्ट्रिंग ऑब्जेक्ट की आवश्यकता है (ए और बी दोनों के लिए, ये दोनों इंगित करेंगे) एक ही वस्तु के लिए)।
- कक्षा लोड हो रहा है स्ट्रिंग का उपयोग क्लास लोडिंग के लिए तर्क के रूप में किया जाता है। यदि परिवर्तनशील है, तो इसका परिणाम गलत वर्ग को लोड किया जा सकता है (क्योंकि परिवर्तनशील वस्तुएं अपनी स्थिति बदलती हैं)।
उदाहरण:
public class StringImmutableDemo { public static void main(String[] args) { String st1 = "Tutorials"; String st2 = "Point"; System.out.println("The hascode of st1 = " + st1.hashCode()); System.out.println("The hascode of st2 = " + st2.hashCode()); st1 = st1 + st2; System.out.println("The Hashcode after st1 is changed : "+ st1.hashCode()); } }
आउटपुट:
The hascode of st1 = -594386763 The hascode of st2 = 77292912 The Hashcode after st1 is changed : 962735579