Last Updated on December 28, 2021 by RAJENDRAPRASAD
Why String is immutable in java in Hindi– Hello दोस्तों rajhindime.in में आपका स्वागत है |
दोस्तों, पिछले पोस्ट String Constant Pool in Java in Hindi में आपने String Constant Pool का use करके JVM तथा Java compiler, String object के memory allocation को कैसे optimize करते हैं , इस बारे में में विस्तृत जानकारी प्राप्त की |
आज के इस पोस्ट में आप String immutability क्याऔर क्योंहै ? के बारे में विस्तार से जानेंगे |
Mutable तथा immutable का क्याअर्थ है ?
Mutable :
इसका अर्थ है, जिसकी Value को बार – बार बदला जा सके |
Immutable:
इसका अर्थ है, जिसकी value एक बार निर्धारित होने के बाद fixed हो जाती है और उसकी value को दुबारा बदला न जा सके |
Mutable Object क्या है ?
Mutable object वे object होते हैं, जिनकी value को initialization के बाद भी change किया जा सकता है |
उदाहरण: Java.util.Date, StringBuilder, StringBuffer इत्यादि |
जब भी हम mutable object की value अथवा state को change करते हैं, तब उस स्थिति में कोई नया object create नहीं होता बल्कि, पहले से जो object बना है, उसी की value में परिवर्तन हो जाता है अर्थात पहले वाली value ही बदल जाती है |
Mutable object thread-safe हो भी सकते हैं और नहीं भी |
Immutable Object क्या है ?
Immutable object वे object होते हैं, जिनकी value को एक बार initialize होने के बाद, फिर से change नहीं किया जा सकता |
उदाहरण : सभी Wrapper Class (Byte, Short, Integer, Long, Float इत्यादि), String Class इत्यादि |
जब भी हम immutable object की value अथवा state को change करते हैं, तब उस स्थिति में पहले से जो object बना है, उसकी value में परिवर्तन होने की बजाय, नया object create हो जाता है| इसका अर्थ यह है कि पहले वाली value change तो नहीं होती बल्कि उसकी जगह, नया object बन जाता हैं नई value के साथ |
Immutable object हमेशा thread-safe होते हैं |
आशा है, अब तक आप mutable object और immutable object को अच्छी तरह समझ गए होंगे |
आइए अब जानते हैं कि String यह immutable क्यों हैऔर इसके क्या फायदे हैं |
Why String is immutable?
जैसा कि आप जानते ही हो कि, String यह Java में सबसे ज्यादा use होने वाला Data type (Class) है |
आप यह भी जानते हो कि, जब भी हम String object create करते है तब, String Constant Pool का use करके JVM तथा Java Compiler , String object के memory allocation को किस तरह optimize करते हैं |
आइए अब हम String immutable क्यों है, इसे हमारे पिछले example Voter ID form के द्वारा समझते हैं |
Program 1:
public class StringImmutabilityDemo1 {
public static void main(String[] args) {
String district_Ram = "Mumbai";
String district_Shyam = "Mumbai";
String district_Laxman = "Mumbai";
String district_Sita = "Mumbai";
}
}
Explanation:
जैसा कि आप देख रहे हो, चूँकि सभी String कि value समान (same) अर्थात “Mumbai” है, इसलिए String Constant Pool में एक ही object बना |
मान लीजिए कुछ समय बाद Mr Ram किसी दूसरी जगह चले जाते हैं और उनकी district अब “Mumbai” से बदलकर “Kolkata” हो जाती है |
मान लीजिए कि, String object mutable है, अब इस स्थिति में यदि Ram अपनी district change करता है, तो String Constant Pool में object कि value “Mumbai” से change हो कर “Kolkata” हो जाएगी |
अब problem यह होगी कि, Ram के साथ – साथ और लोग अर्थात Shyam , Laxman , Sita सभी की district “Mumbai” से बदलकर “Kolkata” हो जाएगी, जबकि हकीकत (real) में केवल Ram की ही location (district) change हुई है |
इसी problem को दूर करने के लिए Java में String object को immutable बनाया गया है |
आइए अब समझते हैं कि, String object immutable होने के कारण इसे String Constant Pool में कैसे handle किया जाता है |
Program 2:
public class StringImmutabilityDemo2 {
public static void main(String[] args) {
String district_Ram = "Mumbai";
String district_Shyam = "Mumbai";
String district_Laxman = "Mumbai";
String district_Sita = "Mumbai";
district_Ram = "Kolkata";
}
}
Explanation:
जैसा कि आप देख रहे हो, पहले district_Ram की value “Mumbai” थी, तब वह SCP में “Mumbai” को refer करता था और जैसे ही, district_Ram की value change होकर “Kolkata” हुई, तब एक नया object create हुआ जिसकी value “Kolkata” है और वह “Mumbai” को छोड़कर “Kolkata” को refer करने लगा |
StringBuffer और StringBuilder क्या है ? जाने हिंदी में
Conclusion – आजआपने क्या सीखा
इस post में आपने जाना कि, String Constant Pool के उपयोग द्वारा उत्पन्न problem को दूर करने के लिए Java में String object को immutable बनाया गया |
आशा है कि, आपको मेरा यह Blog Why String is immutable in java in Hindi | String immutability क्याऔरक्योंहै ? जरूर पसंद आया होगा |
अगर आप इस post से related कोई सवाल पूँछना चाहते हैं अथवा कोई सुझाव देना चाहते हैं तो comment करके जरूर बताएं, मैं उसका reply जरूर दूँगा |
इस post को अपना कीमती समय देने के लिए बहुत बहुत धन्यवाद् | फिर मिलेंगें |
Too good explanation. Thanks for your efforts..
Thank you Harleen !