what is static keyword java
यह ट्यूटोरियल जावा में स्टेटिक कीवर्ड और वेरिएबल्स, मेथड्स, ब्लॉक और क्लासेस में इसके उपयोग की व्याख्या करता है। स्टेटिक और गैर-स्थैतिक सदस्यों के बीच अंतर भी बताता है:
जावा अपने चर, विधियों, वर्गों आदि के दायरे और व्यवहार को इंगित करने के लिए विभिन्न प्रकार की घोषणाओं का समर्थन करता है। उदाहरण के लिए, कीवर्ड अंतिम, मुहरबंद, स्थिर, आदि इन सभी घोषणाओं का कुछ विशिष्ट अर्थ है जब वे जावा प्रोग्राम में उपयोग किए जाते हैं।
हम इस ट्यूटोरियल के साथ आगे बढ़ते हुए इन सभी कीवर्ड्स का पता लगाएंगे। यहां, हम जावा में सबसे महत्वपूर्ण खोजशब्दों में से एक के विवरण पर चर्चा करेंगे अर्थात् 'स्थिर'।
आप क्या सीखेंगे:
- जावा में स्थैतिक खोजशब्द
- निष्कर्ष
जावा में स्थैतिक खोजशब्द
एक जावा प्रोग्राम में एक सदस्य 'घोषणा' / परिभाषा से पहले 'स्थिर' कीवर्ड का उपयोग करके स्थिर के रूप में घोषित किया जा सकता है। जब किसी सदस्य को स्थैतिक घोषित किया जाता है, तो इसका अनिवार्य रूप से अर्थ है कि सदस्य को प्रति उदाहरण की प्रतियां बनाए बिना किसी वर्ग के सभी उदाहरणों द्वारा साझा किया जाता है।
इस प्रकार स्थैतिक जावा में उपयोग किया जाने वाला एक गैर-श्रेणी संशोधक है और इसे निम्नलिखित सदस्यों पर लागू किया जा सकता है:
- चर
- तरीकों
- ब्लाकों
- कक्षाएं (अधिक विशेष रूप से, नेस्टेड कक्षाएं)
जब किसी सदस्य को स्थैतिक घोषित किया जाता है, तो उसे किसी वस्तु का उपयोग किए बिना एक्सेस किया जा सकता है। इसका मतलब यह है कि एक वर्ग को तत्काल करने से पहले, स्थैतिक सदस्य सक्रिय और सुलभ है। अन्य गैर-स्थैतिक वर्ग के सदस्यों के विपरीत जो तब अस्तित्व में आते हैं जब वर्ग की वस्तु दायरे से बाहर हो जाती है, स्थिर सदस्य अभी भी स्पष्ट रूप से सक्रिय है।
जावा में स्थैतिक चर
एक वर्ग के एक सदस्य चर जिसे स्थिर के रूप में घोषित किया जाता है उसे स्टेटिक वेरिएबल कहा जाता है। इसे 'वर्ग चर' के रूप में भी जाना जाता है। एक बार जब चर को स्थिर घोषित कर दिया जाता है, तो स्मृति को केवल एक बार आवंटित किया जाता है, न कि हर बार जब एक वर्ग को त्वरित किया जाता है। इसलिए आप किसी ऑब्जेक्ट के संदर्भ के बिना स्थिर चर तक पहुंच सकते हैं।
निम्न जावा प्रोग्राम में स्टेटिक चर के उपयोग को दर्शाया गया है:
class Main { // static variables a and b static int a = 10; static int b; static void printStatic() { a = a /2; b = a; System.out.println('printStatic::Value of a : '+a + ' Value of b : '+b); } public static void main(String() args) { printStatic(); b = a*5; a++; System.out.println('main::Value of a : '+a + ' Value of b : '+b); } }
आउटपुट:
उपरोक्त प्रोग्राम में, हमारे पास दो स्टैटिक वेरिएबल्स हैं, अर्थात् a और b। हम इन चरों को एक फ़ंक्शन 'प्रिंटस्टैटिक' के साथ-साथ 'मुख्य' में भी संशोधित करते हैं। ध्यान दें कि इन स्थैतिक चर के मान फ़ंक्शन के दायरे के समाप्त होने पर भी फ़ंक्शन में संरक्षित होते हैं। आउटपुट दो कार्यों में चर के मूल्यों को दर्शाता है।
हमें स्थैतिक चर की आवश्यकता क्यों है और वे कहाँ उपयोगी हैं?
स्टेटिक वैरिएबल उन अनुप्रयोगों में सबसे अधिक उपयोगी होते हैं जिनकी काउंटरर्स की आवश्यकता होती है। जैसा कि आप जानते हैं, सामान्य चर के रूप में घोषित किए जाने पर काउंटर गलत मान देंगे।
उदाहरण के लिए, यदि आपके पास एक एप्लिकेशन के काउंटर के रूप में एक सामान्य चर सेट है जिसमें एक वर्ग का कहना है कि कार है। फिर, जब भी हम एक कार ऑब्जेक्ट बनाते हैं, तो सामान्य काउंटर वेरिएबल को हर उदाहरण के साथ आरंभीकृत किया जाएगा। लेकिन अगर हमारे पास एक स्थिर या वर्ग चर के रूप में एक काउंटर चर है, तो यह केवल एक बार जब वर्ग बनाया जाता है, तो इनिशियलाइज़ करेगा।
बाद में, कक्षा के हर उदाहरण के साथ, इस काउंटर को एक से बढ़ा दिया जाएगा। यह सामान्य चर के विपरीत होता है जिसमें प्रत्येक उदाहरण के साथ काउंटर को बढ़ाया जाएगा लेकिन काउंटर का मान हमेशा 1 होगा।
इसलिए यहां तक कि अगर आप क्लास कार के सौ ऑब्जेक्ट बनाते हैं, तो एक सामान्य चर के रूप में काउंटर का मूल्य हमेशा 1 होगा, जबकि एक स्थिर चर के साथ, यह 100 की सही गिनती दिखाएगा।
नीचे दिए गए जावा में स्टेटिक काउंटर का एक और उदाहरण है:
class Counter { static int count=0;//will get memory only once and retain its value Counter() { count++;//incrementing the value of static variable System.out.println(count); } } class Main { public static void main(String args()) { System.out.println('Values of static counter:'); Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } }
आउटपुट:
उपर्युक्त कार्यक्रम में स्थैतिक चर का कार्य स्पष्ट है। हमने प्रारंभिक मूल्य के साथ स्टेटिक वैरिएबल काउंट की घोषणा की है। 0. तब क्लास के कंस्ट्रक्टर में, हम स्टैटिक वेरिएबल को बढ़ाते हैं।
मुख्य फ़ंक्शन में, हम क्लास काउंटर के तीन ऑब्जेक्ट बनाते हैं। जब काउंटर ऑब्जेक्ट बनाया जाता है तो आउटपुट हर बार स्टेटिक वैरिएबल का मान दिखाता है। हम देखते हैं कि निर्मित प्रत्येक वस्तु के साथ विद्यमान स्थिर वैरिएबल मूल्य संवर्धित होता है और पुनर्निमाण नहीं।
जावा स्टेटिक विधि
जावा में एक विधि स्थिर है जब यह 'स्थिर' कीवर्ड से पहले होता है।
स्थैतिक विधि के बारे में कुछ बिंदु जो आपको याद रखने की आवश्यकता है उनमें शामिल हैं:
विंडोज़ 10 के लिए ccleaner का विकल्प
- एक स्थिर विधि वर्ग के अंतर्गत आती है अन्य गैर-स्थैतिक तरीकों के खिलाफ जो एक वर्ग के उदाहरण का उपयोग करके लागू किया जाता है।
- स्थैतिक विधि को लागू करने के लिए, आपको एक क्लास ऑब्जेक्ट की आवश्यकता नहीं है।
- वर्ग के स्थैतिक डेटा सदस्य स्थैतिक विधि के लिए सुलभ हैं। स्थैतिक विधि भी स्थैतिक डेटा सदस्य के मूल्यों को बदल सकती है।
- स्थैतिक विधि में इस 'या' सुपर 'सदस्यों का संदर्भ नहीं हो सकता है। यहां तक कि अगर कोई स्थिर विधि उन्हें संदर्भित करने की कोशिश करती है, तो यह एक संकलक त्रुटि होगी।
- स्थैतिक डेटा की तरह, स्थैतिक विधि अन्य स्थिर तरीकों को भी कॉल कर सकती है।
- एक स्थैतिक विधि गैर-स्थैतिक डेटा सदस्यों या चर को संदर्भित नहीं कर सकती है और गैर-स्थैतिक तरीकों को भी नहीं कह सकती है।
निम्नलिखित कार्यक्रम जावा में स्थिर विधि के कार्यान्वयन को दर्शाता है:
class Main { // static method static void static_method() { System.out.println('Static method in Java...called without any object'); } public static void main(String() args) { static_method(); } }
आउटपुट:
यह एक साधारण चित्रण है। हम एक स्थैतिक विधि को परिभाषित करते हैं जो केवल एक संदेश प्रिंट करता है। फिर मुख्य कार्य में, किसी वर्ग की वस्तु या उदाहरण के बिना स्थिर विधि को कहा जाता है।
जावा में स्थैतिक कीवर्ड कार्यान्वयन का एक और उदाहरण।
class Main { // static variable static int count_static = 5; // instance variable int b = 10; // static method static void printStatic() { count_static = 20; System.out.println('static method printStatic'); // b = 20; // compilation error 'error: non-static variable b cannot be referenced from a static context' //inst_print(); // compilation error 'non-static method inst_print() cannot be referenced from a static //context' //System.out.println(super.count_static); // compiler error 'non-static variable super cannot be //referenced from a static context' } // instance method void inst_print() { System.out.println('instance method inst_print'); } public static void main(String() args) { printStatic(); } }
उपरोक्त कार्यक्रम में, जैसा कि आप देख सकते हैं कि हमारे पास दो विधियाँ हैं। यह विधि एक स्थिर विधि है, जबकि एक स्थिर विधि है। हमारे पास दो चर भी हैं, static_count एक स्थिर चर है और b एक उदाहरण चर है।
स्थैतिक विधि में - प्रिंटस्टैटिक, सबसे पहले, हम एक संदेश प्रदर्शित करते हैं और फिर हम उदाहरण चर b के मूल्य को बदलने की कोशिश करते हैं और गैर-स्थैतिक विधि को भी कहते हैं।
अगला, हम 'सुपर' कीवर्ड का उपयोग करने का प्रयास करते हैं।
बी = 20;
inst_print ();
System.out.println (super.count_static);
जब हम उपरोक्त लाइनों के साथ कार्यक्रम को निष्पादित करते हैं, तो हम उदाहरण चर का उपयोग करने के लिए संकलन त्रुटियों को प्राप्त करते हैं, गैर-स्थिर तरीकों को बुलाते हैं और एक स्थिर संदर्भ में सुपर का उल्लेख करते हैं। ये स्थैतिक विधि की सीमाएँ हैं।
फ़ाइलों को खोलने के लिए कैसे
जब हम उपरोक्त तीन पंक्तियों पर टिप्पणी करते हैं, तभी उपरोक्त कार्यक्रम ठीक काम करता है और निम्नलिखित आउटपुट का उत्पादन करता है।
आउटपुट:
ओवरलोडिंग और स्थैतिक विधि का ओवरराइडिंग
जैसा कि आप सभी जानते हैं कि ओवरलोडिंग और ओवरराइडिंग दोनों OOPS की विशेषताएं हैं और ये बहुरूपता में सहायता करते हैं। ओवरलोडिंग को संकलन-समय के बहुरूपता के रूप में वर्गीकृत किया जा सकता है जिसमें आपके पास समान नाम लेकिन विभिन्न पैरामीटर सूचियों के तरीके हो सकते हैं।
ओवरराइडिंग रन टाइम पोलिमोर्फ़िज्म की एक विशेषता है और इसमें व्युत्पन्न वर्ग में बेस क्लास पद्धति को ओवरराइड किया जाता है ताकि विधि हस्ताक्षर या प्रोटोटाइप समान हो लेकिन परिभाषा अलग हो।
आइए चर्चा करते हैं कि अधिभार और ओवरराइडिंग जावा में स्थिर वर्ग को कैसे प्रभावित करते हैं।
अधिक भार
आप विभिन्न पैरामीटर सूचियों के साथ जावा में एक स्थिर विधि को अधिभार दे सकते हैं लेकिन एक ही नाम के साथ।
निम्नलिखित कार्यक्रम ओवरलोडिंग दिखाता है:
public class Main { public static void static_method() { System.out.println('static_method called '); } public static void static_method(String msg) { System.out.println('static_method(string) called with ' + msg); } public static void main(String args()) { static_method(); static_method('Hello, World!!'); } }
आउटपुट:
इस कार्यक्रम में एक ही नाम 'static_method' के साथ दो स्थिर विधियां हैं लेकिन एक अलग तर्क सूची है। पहली विधि कोई तर्क नहीं लेती है और दूसरी विधि एक स्ट्रिंग तर्क लेती है।
ध्यान देने वाली बात यह है कि आप केवल 'स्थैतिक' कीवर्ड के आधार पर विधि को अधिभारित नहीं कर सकते हैं। उदाहरण के लिए, यदि आपके पास एक इंस्टेंस विधि ’योग’ है और यदि आप एक अन्य विधि 'योग' को परिभाषित करते हैं और इसे स्टेटिक घोषित करते हैं, तो यह काम नहीं करने वाला है। 'स्थिर' कीवर्ड के आधार पर ओवरलोड करने का यह प्रयास एक संकलन विफलता का परिणाम है।
अधिभावी
चूंकि स्टैटिक विधियाँ कक्षा के किसी भी ऑब्जेक्ट के बिना लागू की जाती हैं, भले ही आपके पास व्युत्पन्न वर्ग में एक ही हस्ताक्षर के साथ एक स्टैटिक विधि हो, यह ओवरराइडिंग नहीं होगा। इसका कारण यह है कि एक उदाहरण के बिना कोई रन-टाइम बहुरूपता नहीं है।
इसलिए आप एक स्थिर विधि को ओवरराइड नहीं कर सकते। लेकिन अगर बिल्कुल भी व्युत्पन्न वर्ग में एक ही हस्ताक्षर के साथ एक स्थिर विधि है, तो कॉल करने की विधि रन टाइम में वस्तुओं पर निर्भर नहीं होती है लेकिन यह कंपाइलर पर निर्भर करती है।
आपको यह ध्यान रखना होगा कि यद्यपि स्थिर विधियों को ओवरराइड नहीं किया जा सकता है, जावा भाषा में कोई कंपाइलर त्रुटि नहीं देता है जब आपके पास आधार वर्ग विधि के समान हस्ताक्षर के साथ व्युत्पन्न वर्ग में एक विधि होती है।
निम्नलिखित कार्यान्वयन इस बात को साबित करता है।
classBase_Class { // Static method in base class which will be hidden in substatic_displayclass public static void static_display() { System.out.println('Base_Class::static_display'); } } classDerived_Class extends Base_Class { public static void static_display() { System.out.println('Derived_Class::static_display'); } } public class Main { public static void main(String args( )) { Base_Class obj1 = new Base_Class(); Base_Class obj2 = new Derived_Class(); Derived_Class obj3 = new Derived_Class(); obj1.static_display(); obj2.static_display(); obj3.static_display(); } }
आउटपुट:
उपरोक्त कार्यक्रम में, आप देख सकते हैं कि स्थिर विधि जिसे कहा जाता है वह इस बात पर निर्भर नहीं करता है कि सूचक किस वस्तु को इंगित करता है। ऐसा इसलिए है क्योंकि ऑब्जेक्ट्स स्टैटिक विधियों के साथ उपयोग नहीं किए जाते हैं।
जावा में स्थैतिक ब्लॉक
जैसे आपके पास जावा में प्रोग्रामिंग भाषाओं जैसे C ++, C #, आदि में फ़ंक्शन ब्लॉक हैं, वैसे ही 'स्टैटिक' ब्लॉक नामक एक विशेष ब्लॉक है जिसमें आमतौर पर स्थिर डेटा से संबंधित कोड का एक ब्लॉक शामिल होता है।
इस स्थिर ब्लॉक को उस समय निष्पादित किया जाता है जब कक्षा का पहला ऑब्जेक्ट बनाया जाता है (ठीक क्लास लोडिंग के समय) या जब ब्लॉक के अंदर स्थिर सदस्य का उपयोग किया जाता है।
निम्न प्रोग्राम एक स्थिर ब्लॉक के उपयोग को दर्शाता है।
class Main { static int sum = 0; static int val1 = 5; static int val2; // static block static { sum = val1 + val2; System.out.println('In static block, val1: ' + val1 + ' val2: '+ val2 + ' sum:' + sum); val2 = val1 * 3; sum = val1 + val2; } public static void main(String() args) { System.out.println('In main function, val1: ' + val1 + ' val2: '+ val2 + ' sum:' + sum); } }
आउटपुट:
उपरोक्त कार्यक्रम में कथनों के निष्पादन का क्रम नोट करें। स्थैतिक ब्लॉक की सामग्री को पहले मुख्य कार्यक्रम द्वारा निष्पादित किया जाता है। स्टैटिक वैरिएबल योग और वैल 1 के शुरुआती मूल्य हैं जबकि वैल 2 को इनिशियलाइज़ नहीं किया गया है (यह 0 से चूक जाता है)। फिर स्थिर ब्लॉक वैल 2 में अभी भी एक मान नहीं दिया गया है और इसलिए इसका मान 0 के रूप में प्रदर्शित किया गया है।
वैरिएबल ब्लॉक में प्रिंटिंग के बाद वेरिएबल वैल 2 को वैल्यू असाइन किया जाता है और योग की पुनर्गणना की जाती है। इसलिए, मुख्य फ़ंक्शन में, हमें योग और वैल 2 के विभिन्न मूल्य मिलते हैं।
यदि आप एक कंस्ट्रक्टर को निर्दिष्ट करते हैं, तो स्टैटिक ब्लॉक की सामग्री को कंस्ट्रक्टर से पहले भी निष्पादित किया जाता है। स्टैटिक ब्लॉक का उपयोग ज्यादातर क्लास के स्टैटिक सदस्यों और स्टेटिक सदस्यों से संबंधित अन्य इनिशियलाइज़ेशन को इनिशियलाइज़ करने के लिए किया जाता है।
जावा स्टेटिक क्लास
जावा में, आपके पास स्टैटिक ब्लॉक, स्टैटिक मेथड और स्टैटिक वैरिएबल भी हैं। इसलिए यह स्पष्ट है कि आपके पास स्थिर कक्षाएं भी हो सकती हैं। जावा में, किसी अन्य वर्ग के अंदर एक वर्ग होना संभव है और इसे एक नेस्टेड वर्ग कहा जाता है। नेस्टेड क्लास को घेरने वाले वर्ग को आउटर क्लास कहा जाता है।
जावा में, हालांकि आप एक नेस्टेड क्लास को स्टैटिक घोषित कर सकते हैं, लेकिन स्टैटिक के रूप में बाहरी वर्ग का होना संभव नहीं है।
आइए अब जावा में स्थिर नेस्टेड कक्षाओं का पता लगाएं।
जावा में स्टेटिक नेस्टेड क्लास
जैसा कि पहले ही उल्लेख किया गया है, आप स्थैतिक घोषित जावा में एक नेस्टेड क्लास रख सकते हैं। स्टैटिक नेस्टेड क्लास नीचे सूचीबद्ध कुछ पहलुओं में नॉन-स्टैटिक नेस्टेड क्लास (आंतरिक वर्ग) से भिन्न होता है।
नॉन-स्टैटिक नेस्टेड क्लास के विपरीत, नेस्टेड स्टैटिक क्लास को बाहरी वर्ग के संदर्भ की आवश्यकता नहीं होती है।
एक स्थिर नेस्टेड वर्ग बाहरी वर्ग के केवल स्थिर सदस्यों तक पहुंच सकता है, गैर-स्थिर वर्गों के खिलाफ जो स्थिर और साथ ही बाहरी वर्ग के गैर-स्थिर सदस्यों तक पहुंच सकता है।
स्टैटिक नेस्टेड क्लास का एक उदाहरण नीचे दिया गया है।
class Main{ private static String str = 'SoftwareTestingHelp'; //Static nested class static class NestedClass{ //non-static method public void display() { System.out.println('Static string in OuterClass: ' + str); } } public static void main(String args()) { Main.NestedClassobj = new Main.NestedClass(); obj.display(); } }
आउटपुट:
उपरोक्त कार्यक्रम में, आप देखते हैं कि स्थिर नेस्टेड क्लास बाहरी वर्ग से स्थिर चर (स्ट्रिंग) का उपयोग कर सकता है।
जावा में स्थैतिक आयात
जैसा कि आप जानते हैं, हम आम तौर पर 'आयात' निर्देश का उपयोग करके जावा प्रोग्राम में विभिन्न पैकेज और पूर्वनिर्धारित कार्यक्षमता शामिल करते हैं। आयात निर्देश के साथ स्थिर शब्द का उपयोग करना आपको वर्ग नाम का उपयोग किए बिना वर्ग कार्यक्षमता का उपयोग करने की अनुमति देता है।
उदाहरण:
import static java.lang.System.*; class Main { public static void main(String() args) { //here we import System class using static, hence we can directly use functionality out.println('demonstrating static import'); } }
आउटपुट:
इस कार्यक्रम में, हम java.lang.System वर्ग के लिए स्थैतिक आयात का उपयोग करते हैं।
ध्यान दें: मुख्य फ़ंक्शन में, हमने संदेश प्रदर्शित करने के लिए सिर्फ out.println का उपयोग किया है।
हालांकि स्टैटिक इम्पोर्ट फीचर कोड को अधिक संक्षिप्त और पठनीय बनाता है, लेकिन यह कभी-कभी अस्पष्टता पैदा करता है, खासकर जब कुछ पैकेजों में समान कार्य होते हैं। अत: स्थैतिक आयात का उपयोग अत्यंत आवश्यक होने पर ही किया जाना चाहिए।
स्टेटिक बनाम गैर-स्टेटिक
आइए हम जावा के Static और Non-Static सदस्यों के बीच के प्रमुख अंतरों पर चर्चा करते हैं।
नीचे सूचीबद्ध दोनों के बीच अंतर हैं स्टेटिक और नॉन-स्टेटिक वैरिएबल ।
स्थैतिक चर | गैर-स्थैतिक चर |
---|---|
इसे केवल कक्षा के नाम का उपयोग करके एक्सेस किया जा सकता है। | उपयोग करने के लिए एक वर्ग की वस्तुओं की आवश्यकता होती है। |
दोनों स्टैटिक के साथ-साथ नॉन-स्टैटिक तरीकों तक पहुँच योग्य हैं। | केवल गैर-स्थैतिक तरीकों के लिए सुलभ हैं। |
स्थिर चर के लिए एक मेमोरी प्रति वर्ग में केवल एक बार आवंटित की जाती है। | गैर-स्थैतिक चर के लिए एक मेमोरी प्रति ऑब्जेक्ट आवंटित की जाती है। |
वर्ग की सभी वस्तुओं द्वारा साझा किया गया। | प्रति वस्तु चर की एक प्रति बनाई जाती है। |
वैश्विक गुंजाइश है और सभी तरीकों और ब्लॉकों के लिए उपलब्ध है। | स्थानीय गुंजाइश है और कक्षा की वस्तुओं के लिए दृश्यमान है। |
नीचे दिए गए Static और Non-Static तरीकों में अंतर है ।
सम्मिलन सॉर्ट कोड c ++
स्थैतिक तरीके | गैर-स्थिर तरीके |
---|---|
एक विधि जो एक स्थैतिक कीवर्ड से पहले होती है और कक्षा स्तर पर उपलब्ध होती है। | एक विधि जो स्थैतिक कीवर्ड से पहले नहीं है और कक्षा के प्रत्येक उदाहरण के लिए उपलब्ध है। |
संकलन-समय या शुरुआती बाध्यकारी का समर्थन करता है। | रन-टाइम या डायनेमिक बाइंडिंग का समर्थन करता है। |
अपने वर्ग और किसी भी अन्य वर्ग के केवल स्थैतिक डेटा सदस्यों तक ही पहुँच सकता है। | स्थिर और साथ ही वर्ग और अन्य वर्गों के गैर-स्थिर सदस्यों तक पहुँच सकते हैं। |
स्थैतिक तरीकों को ओवरराइड नहीं किया जा सकता है। | ओवरराइड किया जा सकता है। |
मेमोरी केवल एक बार आवंटित की जाती है। इसलिए उपयोग की जाने वाली मेमोरी कम होती है। | मेमोरी का उपयोग तब अधिक होता है जब मेमोरी को हर बार आवंटित किया जाता है। |
स्टेटिक बनाम फाइनल
जावा में स्टैटिक और फाइनल दो कीवर्ड हैं जो उस इकाई को विशेष अर्थ दे सकते हैं जिसके साथ इसका उपयोग किया जाता है। उदाहरण के लिए, जब एक चर को स्थिर के रूप में घोषित किया जाता है, तो यह एक वर्ग चर बन जाता है जिसे ऑब्जेक्ट के संदर्भ के बिना एक्सेस किया जा सकता है।
इसी तरह, जब एक चर को अंतिम घोषित किया जाता है, तो यह अपरिवर्तनीय हो जाता है यानी स्थिर।
जावा में स्टेटिक और फाइनल कीवर्ड के बीच कुछ प्रमुख अंतरों को सारणीबद्ध करें।
स्थिर | अंतिम |
---|---|
एक स्थैतिक डेटा सदस्य (नेस्टेड क्लास, वैरिएबल या विधि) स्थैतिक कीवर्ड से पहले का डेटा सदस्य होता है और इसे बिना किसी ऑब्जेक्ट के एक्सेस किया जा सकता है। | अंतिम कीवर्ड एक चर, विधि, वर्ग, आदि के लिए लागू किया जा सकता है। और संस्थाओं पर प्रतिबंध लगाता है। |
घोषणा के दौरान मूल्य के साथ स्थिर चर को शुरू करना अनिवार्य नहीं है। | यह आवश्यक है कि अंतिम चर को घोषणा के समय एक मूल्य पर आरंभीकृत किया जाए |
आप स्थैतिक चर को फिर से संगठित कर सकते हैं। | अंतिम चर को फिर से संगठित करना संभव नहीं है। |
स्थैतिक विधियाँ वे हैं जो केवल स्थैतिक सदस्यों तक ही पहुँच सकती हैं। | अंतिम विधियाँ वे विधियाँ हैं जिन्हें विरासत में प्राप्त / अधिग्रहित नहीं किया जा सकता है। |
स्टैटिक क्लासेस वे क्लास होते हैं जिनकी ऑब्जेक्ट नहीं बनाई जा सकती हैं। | अंतिम वर्ग वे वर्ग हैं जिन्हें विरासत में नहीं दिया जा सकता है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या जावा क्लास स्टेटिक हो सकता है?
उत्तर: हां, जावा में एक वर्ग स्थिर हो सकता है, बशर्ते वह बाहरी वर्ग न हो। इसका मतलब यह है कि जावा में केवल नेस्टेड कक्षाएं स्थिर हो सकती हैं।
Q # 2) मुझे जावा में स्टेटिक का उपयोग कब करना चाहिए?
उत्तर: जब भी आप अपने प्रोग्राम में एक डेटा मेंबर चाहते हैं जो ऑब्जेक्ट्स पर उसकी वैल्यू रखें, तो आपको स्टैटिक का इस्तेमाल करना चाहिए। उदाहरण के लिए, एक काउंटर। एक विधि को स्थिर के रूप में घोषित किया जा सकता है जब आप किसी ऑब्जेक्ट का उपयोग करके इसे लागू नहीं करना चाहते हैं।
Q # 3) क्या स्टैटिक क्लास में कंस्ट्रक्टर हो सकता है?
उत्तर: हां, एक स्थिर वर्ग में एक कंस्ट्रक्टर हो सकता है और इसका उद्देश्य पूरी तरह से स्थैतिक डेटा सदस्यों को शुरू करना है। यह पहली बार केवल तब लागू किया जाएगा जब डेटा सदस्य एक्सेस कर रहे हों। बाद के उपयोग के लिए इसे लागू नहीं किया जाएगा।
Q # 4) स्टेटिक कंस्ट्रक्टर का उपयोग क्या है?
उत्तर: सामान्य तौर पर, स्थिर डेटा सदस्यों को प्रारंभ करने के लिए कंस्ट्रक्टर का उपयोग किया जाता है। इसका उपयोग उन कार्यों / कार्यों को करने के लिए भी किया जाता है जिन्हें केवल एक बार करने की आवश्यकता होती है।
Q # 5) क्या स्थैतिक तरीके जावा में विरासत में मिले हैं?
उत्तर: हां, जावा में स्थिर तरीके विरासत में मिले हैं लेकिन ओवरराइड नहीं हैं।
निष्कर्ष
इस ट्यूटोरियल में, हमने डेटा सदस्यों, विधियों, ब्लॉकों और कक्षाओं में इसके उपयोग के साथ-साथ जावा के स्थिर कीवर्ड पर विस्तार से चर्चा की। स्टैटिक कीवर्ड एक कीवर्ड होता है, जिसका उपयोग क्लास लेवल या ग्लोबल स्कोप को इंगित करने के लिए किया जाता है।
आपको कक्षा के उदाहरणों का उपयोग करके स्थिर सदस्यों तक पहुँचने की आवश्यकता नहीं है। आप वर्ग नाम का उपयोग करके सीधे स्थैतिक डेटा सदस्यों तक पहुँच सकते हैं। हमने स्थैतिक और गैर-स्थैतिक सदस्यों के साथ-साथ स्थिर और अंतिम कीवर्ड के बीच प्रमुख अंतरों पर भी चर्चा की।
अपने बाद के विषयों में, हम जावा भाषा में अधिक कीवर्ड और उनके महत्व का पता लगाएंगे।
अनुशंसित पाठ
- C ++ में Static
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल
- जावा परिनियोजन: जावा जार फाइल का निर्माण और निष्पादन
- जावा वर्चुअल मशीन: जावा एप्लीकेशन चलाने में JVM कैसे मदद करता है
- सी # कॉन्सेप्ट: कंस्ट्रक्टर, डिस्ट्रक्टर, स्टेटिक क्लास, स्ट्रक्चर एंड एनम
- जावा में मॉडिफायर एक्सेस करें - उदाहरणों के साथ ट्यूटोरियल
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- जावा प्रोग्रामिंग भाषा का परिचय - वीडियो ट्यूटोरियल