इस ट्यूटोरियल में, हम उदाहरणों की मदद से जावा स्टैटिक कीवर्ड के साथ-साथ स्टैटिक मेथड्स, स्टैटिक वैरिएबल और स्टैटिक ब्लॉक के बारे में जानेंगे।
जावा में एक स्थिर कीवर्ड क्या है?
जावा में, यदि हम कक्षा के सदस्यों को एक्सेस करना चाहते हैं, तो हमें पहले कक्षा का एक उदाहरण बनाना होगा। लेकिन ऐसी परिस्थितियाँ होंगी जहाँ हम बिना किसी चर को बनाए वर्ग के सदस्यों तक पहुँच चाहते हैं।
उन स्थितियों में, हम static
जावा में कीवर्ड का उपयोग कर सकते हैं । यदि हम कक्षा का उदाहरण बनाए बिना कक्षा के सदस्यों तक पहुँच चाहते हैं, तो हमें कक्षा के सदस्यों को स्थिर घोषित करने की आवश्यकता है।
Math
जावा में वर्ग अपने सदस्यों स्थिर के लगभग सभी है। इसलिए, हम मठ वर्ग के उदाहरणों को बनाए बिना इसके सदस्यों तक पहुँच सकते हैं। उदाहरण के लिए,
public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )
आउटपुट :
-12 का पूर्ण मान = PI का 3. मान = 3.151592653589793 E का मूल्य = 2.718281828459045 2 2 = 4.0
उपरोक्त उदाहरण में, हमने Math
कक्षा के किसी भी उदाहरण को नहीं बनाया है । लेकिन हम इसके तरीकों तक पहुँचने में सक्षम हैं: abs()
और pow()
और चर: PI
और E
।
यह संभव है क्योंकि Math
वर्ग के तरीके और चर स्थिर हैं।
स्थैतिक तरीके
स्थैतिक विधियों को वर्ग विधियां भी कहा जाता है। ऐसा इसलिए है क्योंकि एक स्थिर विधि एक वर्ग की वस्तु के बजाय कक्षा से संबंधित है।
और हम कक्षा नाम का उपयोग करके सीधे स्थैतिक तरीकों को लागू कर सकते हैं। उदाहरण के लिए,
class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )
यहां, हम देख सकते हैं कि क्लास नाम का उपयोग करके स्टैटिक विधि को अन्य वर्गों से सीधे एक्सेस किया जा सकता है।
हर जावा प्रोग्राम में, हमने main
विधि घोषित की है static
। यह इसलिए है क्योंकि कार्यक्रम को चलाने के लिए जेवीएम को प्रारंभिक चरण के दौरान मुख्य विधि को लागू करने में सक्षम होना चाहिए जहां मेमोरी में कोई ऑब्जेक्ट मौजूद नहीं है।
उदाहरण 1: जावा स्टैटिक और नॉन-स्टैटिक तरीके
class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )
आउटपुट :
2 * 2 = 4 2 + 3 = 5
उपर्युक्त कार्यक्रम में, हमने एक गैर-स्थैतिक विधि का नाम घोषित किया है multiply()
और एक स्थिर विधि जिसे add()
कक्षा के अंदर नाम दिया गया है StaticTest
।
मुख्य वर्ग के अंदर, हम देख सकते हैं कि हम कक्षा की वस्तु का उपयोग करके गैर-स्थैतिक विधि को बुला रहे हैं ( st.multiply(2, 2)
)। हालाँकि, हम क्लास नाम ( StaticTest.add(2, 3)
) का उपयोग करके स्थैतिक विधि को बुला रहे हैं ।
स्थैतिक चर
जावा में, जब हम एक वर्ग की वस्तुओं का निर्माण करते हैं, तो प्रत्येक वस्तु की कक्षा के सभी चर की अपनी प्रति होगी। उदाहरण के लिए,
class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )
यहां, दोनों ऑब्जेक्ट्स test1 और test2 में परिवर्तनशील आयु की अलग-अलग प्रतियां होंगी। और, वे एक दूसरे से अलग हैं।
हालाँकि, यदि हम एक वैरिएबल स्टेटिक की घोषणा करते हैं, तो क्लास की सभी वस्तुएँ समान स्टैटिक वेरिएबल को साझा करती हैं। यह इसलिए है क्योंकि स्थैतिक तरीकों की तरह, स्थिर चर भी वर्ग से जुड़े होते हैं। और, हमें स्थैतिक चर तक पहुंचने के लिए कक्षा की वस्तुओं को बनाने की आवश्यकता नहीं है। उदाहरण के लिए,
class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )
यहां, हम देख सकते हैं कि हम क्लास नाम का उपयोग करके दूसरे वर्ग से स्थैतिक चर को एक्सेस कर रहे हैं।
उदाहरण 2: जावा स्थिर और गैर-स्थिर चर
class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )
आउटपुट :
न्यूनतम + 1 = 6 अधिकतम + 1 = 11
उपर्युक्त कार्यक्रम में, हमने एक गैर-स्टेटिक वैरिएबल को न्यूनतम घोषित किया है और एक स्टैटिक वैरिएबल है जिसे क्लास टेस्ट के अंदर अधिकतम नाम दिया गया है।
मुख्य वर्ग के अंदर, हम देख सकते हैं कि हम कक्षा के ऑब्जेक्ट का उपयोग करके गैर-स्थिर चर कह रहे हैं ( obj.min + 1
)। हालाँकि, हम स्थिर नाम को वर्ग नाम ( Test.max + 1
) का उपयोग करके बुला रहे हैं ।
नोट : स्थैतिक चर शायद ही कभी जावा में उपयोग किए जाते हैं। इसके बजाय, स्थैतिक स्थिरांक का उपयोग किया जाता है। ये स्थैतिक स्थिरांक static final
कीवर्ड द्वारा परिभाषित होते हैं और अपरकेस में दर्शाए जाते हैं। यही कारण है कि कुछ लोग स्टेटिक चर के लिए अपरकेस का उपयोग करना पसंद करते हैं।
कक्षा के भीतर स्थिर चर और तरीकों तक पहुँचें
हम किसी अन्य वर्ग से स्थैतिक चर पर पहुँच रहे हैं। इसलिए, हमने इसे एक्सेस करने के लिए वर्ग नाम का उपयोग किया है। हालाँकि, अगर हम क्लास के अंदर से स्थैतिक सदस्य को एक्सेस करना चाहते हैं, तो इसे सीधे एक्सेस किया जा सकता है। उदाहरण के लिए,
public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )
आउटपुट :
आयु 30 स्थैतिक विधि है
यहां, हम कक्षा नाम का उपयोग किए बिना सीधे स्थिर चर और विधि का उपयोग करने में सक्षम हैं। यह इसलिए है क्योंकि स्थैतिक चर और विधियाँ डिफ़ॉल्ट रूप से सार्वजनिक होती हैं। और, चूंकि हम एक ही वर्ग से पहुंच रहे हैं, इसलिए हमें कक्षा का नाम निर्दिष्ट करने की आवश्यकता नहीं है।
स्थैतिक ब्लॉक
जावा में, स्थिर वैरिएबल को इनिशियलाइज़ करने के लिए स्टैटिक ब्लॉक का उपयोग किया जाता है। उदाहरण के लिए,
class Test ( // static variable static int age; // static block static ( age = 23; ) )
यहां हम देख सकते हैं कि हमने सिंटैक्स के साथ एक स्थिर ब्लॉक का उपयोग किया है:
static ( // variable initialization )
स्टैटिक ब्लॉक को केवल एक बार निष्पादित किया जाता है जब क्लास को मेमोरी में लोड किया जाता है। वर्ग लोड किया जाता है यदि या तो वर्ग का ऑब्जेक्ट कोड में अनुरोध किया जाता है या स्थिर सदस्यों को कोड में अनुरोध किया जाता है।
एक क्लास में कई स्टैटिक ब्लॉक हो सकते हैं और प्रत्येक स्टैटिक ब्लॉक को उसी क्रम में निष्पादित किया जाता है जिसमें उन्हें एक प्रोग्राम में लिखा गया है।
उदाहरण 3: जावा में स्थिर ब्लॉक का उपयोग
class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )
आउटपुट :
पहला स्टेटिक ब्लॉक। दूसरा स्टेटिक ब्लॉक। a = 23 b = 92 अधिकतम = 30
उपरोक्त कार्यक्रम में। जैसे ही मुख्य वर्ग लोड किया जाता है,
- का मान सेट किया गया है
23
। - पहला स्टैटिक ब्लॉक निष्पादित किया जाता है। इसलिए, स्ट्रिंग
First Static block
मुद्रित होती है और b का मान सेट होता हैa * 4
। - दूसरा स्थिर ब्लॉक निष्पादित किया जाता है। इसलिए, स्ट्रिंग
Second Static block
मुद्रित की जाती है और अधिकतम का मान सेट किया जाता है30
। - और अंत में, विधि के अंदर प्रिंट स्टेटमेंट
display()
निष्पादित किए जाते हैं।
नेस्टेड स्टेटिक क्लास
जावा में, हम एक वर्ग को दूसरी कक्षा के अंदर घोषित कर सकते हैं। ऐसी कक्षाओं को नेस्टेड क्लास के रूप में जाना जाता है। नस्टेड वर्ग 2 प्रकार के होते हैं:
- स्टेटिक नेस्टेड क्लासेस
- नॉन-स्टैटिक नेस्टेड क्लासेस
उदाहरण के लिए,
class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )
अधिक जानने के लिए, जावा नेस्टेड क्लास पर जाएं।