Java में, कुशल स्मृति प्रबंधन के लिए "स्थिर" कीवर्ड का उपयोग किया जाता है। एक बार एक चर या विधि को स्थिर . के रूप में घोषित कर दिया जाता है , तो JVM केवल एक बार इन वेरिएबल के लिए मेमोरी आवंटित करेगा। आमतौर पर स्थिर चर का उपयोग वर्ग . के सामान्य गुणों को घोषित करने के लिए किया जाता है , उदाहरण के लिए, "संस्था का नाम"। निम्नलिखित उदाहरण में, हम देखेंगे कि स्थिर . का उपयोग कैसे करें कीवर्ड।
जावा का उपयोग करने में स्टेटिक का उदाहरण
यह प्रदर्शित करने के लिए कि कैसे स्थिर जावा में काम करता है, हम अपने ऑनलाइन जावा कंपाइलर को एक्सेस करेंगे और हम एक टेस्ट . तैयार करेंगे कक्षा। अंदर परीक्षण , हम स्थिर . के साथ एक स्थिर चर बनाने का प्रयास करेंगे मेथड और हम दोनों को बिना इसकी क्लास . बनाए ही एक्सेस करेंगे वस्तुओं।
उदाहरण
पब्लिक क्लास टेस्ट {स्थिर int myStaticVariable =10; // स्थिर विधि स्थैतिक शून्य स्थैतिक विधि () {System.out.println ("www.tutorialspoint.com"); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {// स्थिर विधि और चर तक पहुँचने के बिना // वर्ग के किसी भी वस्तु का परीक्षण staticMethod (); System.out.println ("स्टेटिक वेरिएबल एक्सेस करना-"+myStaticVariable); }}पूर्व>आउटपुट
एक बार जब आप कोड निष्पादित करते हैं, तो यह निम्न आउटपुट उत्पन्न करेगा -
$javac Test.java$java -Xmx128M -Xms16M टेस्टwww.tutorialspoint.comस्टेटिक वेरिएबल-10 को एक्सेस करनाकोटलिन में जावा स्टेटिक विधियों के समतुल्य
कोटलिन में, हमारे पास स्थिर . नहीं है खोजशब्द। इस लेख में, हम सीखेंगे कि कोटलिन लाइब्रेरी में उपलब्ध एक अलग कीवर्ड का उपयोग करके हम समान मेमोरी प्रबंधन कैसे प्राप्त कर सकते हैं। इसका उद्देश्य एक ऐसी स्थिति को चुनने के लिए एक अलग कोटलिन लाइब्रेरी फ़ंक्शन को लागू करना है जहां मेमोरी केवल एक बार बनाई जाएगी और इसके मूल्य को एप्लिकेशन के अन्य अनुभाग से संशोधित नहीं किया जा सकता है।
स्थिर . का उपयोग करने के दो तरीके हैं कोटलिन में -
-
सहयोगी वस्तु का उपयोग करना
-
ऑब्जेक्ट क्लास और @JvmStatic एनोटेशन का उपयोग करना
आइए इनमें से प्रत्येक तरीके को विस्तार से समझते हैं।
सहयोगी वस्तु का उपयोग करना
एक साथी जोड़ना ऑब्जेक्ट में डेवलपर्स को स्थिर . हासिल करने में मदद मिलेगी कोटलिन में कार्यक्षमता। यह ऑब्जेक्ट को उसी फ़ाइल में संग्रहीत करता है जहां कक्षा संग्रहीत होती है, इसलिए यह कक्षा के अंदर सभी निजी विधियों और चरों तक पहुंच सकती है। यह क्लास इनिशियलाइज़ेशन स्टेज के साथ इनिशियलाइज़ हो जाता है।
उदाहरण
हम एक सहयोगी वस्तु को लागू करने का प्रयास करेंगे और हम देखेंगे कि हम कोटलिन में स्मृति प्रबंधन को कितनी कुशलता से संभाल सकते हैं।
fun main(args:Array) {// क्लास वेरिएबल और मेथड को एक्सेस करना ऑब्जेक्ट।" + MyClass.staticField+'\n') println("Hello!"+'\n' + "यह बिना ऑब्जेक्ट बनाए क्लास मेथड को एक्सेस करने का एक उदाहरण है।" + MyClass.getStaticFunction()+'\n');}वर्ग MyClass{ साथी वस्तु { val staticField ="यह एक स्थिर चर है।" fun getStaticFunction ():स्ट्रिंग {वापसी "यह एक स्थिर विधि है।" } }}पूर्व> आउटपुट
एक बार जब आप कोड निष्पादित करते हैं, तो यह निम्न आउटपुट उत्पन्न करेगा -
Hello!यह ऑब्जेक्ट बनाए बिना क्लास वेरिएबल को एक्सेस करने का एक उदाहरण है। यह एक स्टेटिक वेरिएबल है। हैलो! यह बिना ऑब्जेक्ट बनाए क्लास मेथड को एक्सेस करने का एक उदाहरण है। यह एक स्थिर विधि है।इस नमूना कोड में, यदि आप स्थिर . में से किसी के मान को संशोधित करने का प्रयास करते हैं चर, आप देखेंगे कि कोटलिन कंपाइलर एक त्रुटि फेंक देगा।
उदाहरण
fun main(args:Array) {// स्थिर चर MyClass.staticField="Hello Students" को संशोधित करने का प्रयास कर रहा है; println("Hello!"+'\n'+"यह बिना ऑब्जेक्ट बनाए क्लास वेरिएबल को एक्सेस करने का एक उदाहरण है-"+MyClass.staticField+'\n')}class MyClass{ साथी ऑब्जेक्ट { val staticField ="यह एक स्टेटिक है चर" मज़ा getStaticFunction ():स्ट्रिंग {वापसी "यह एक स्थिर विधि है" } }}आउटपुट
उपरोक्त कोड निम्न त्रुटि उत्पन्न करेगा -
$kotlinc -nowarn main.kt -include-runtime -d main.jarmain.kt:5:5:त्रुटि:वैल को फिर से असाइन नहीं किया जा सकता हैMyClass.staticField="Hello Students";^ऑब्जेक्ट क्लास और @JvmStatic एनोटेशन का उपयोग करना
कोटलिन दस्तावेज के अनुसार, एक बार @JvmStatic एनोटेशन किसी भी चर या विधि पर लागू किया जाता है, यह स्थिर . के रूप में कार्य करेगा उस वर्ग की कार्यक्षमता।
उदाहरण
निम्नलिखित उदाहरण में, हम एक ऑब्जेक्ट बनाएंगे क्लास और उस ऑब्जेक्ट . में वर्ग, हम @JvmStatic . का उपयोग करके चर और विधियों की घोषणा करेंगे स्थिर . को लागू करने के लिए एनोटेशन कोटलिन वातावरण में कार्यक्षमता।
fun main(args:Array) {// क्लास वेरिएबल और मेथड को एक्सेस करना ।" +MyClass.staticField+'\n') println("Hello!"+'\n' + "यह बिना ऑब्जेक्ट बनाए क्लास मेथड को एक्सेस करने का एक उदाहरण है। " +MyClass.getStaticFunction()+'\n');}ऑब्जेक्ट MyClass{ @JvmStatic val staticField ="यह एक स्टेटिक वैरिएबल है।" @JvmStatic fun getStaticFunction ():स्ट्रिंग {वापसी "यह एक स्थिर विधि है।" }}पूर्व>आउटपुट
यह परिणाम अनुभाग में निम्नलिखित आउटपुट उत्पन्न करेगा। -
Hello! यह बिना ऑब्जेक्ट बनाए क्लास वेरिएबल को एक्सेस करने का एक उदाहरण है। यह एक स्टेटिक वेरिएबल है।हैलो!यह बिना ऑब्जेक्ट बनाए क्लास मेथड को एक्सेस करने का एक उदाहरण है। यह एक स्थिर विधि है।