"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावा में `स्टैटिक` का जादू: सभी के लिए एक, और सभी एक के लिए!

जावा में `स्टैटिक` का जादू: सभी के लिए एक, और सभी एक के लिए!

2024-11-06 को प्रकाशित
ब्राउज़ करें:742

The Magic of `static` in Java: One for All, and All for One!

आइए ईमानदार रहें - जब हम पहली बार स्थिर कीवर्ड के सामने आते हैं, तो हम सभी सोचते हैं: "यह किस तरह का जादू है?" ? लेकिन चिंता न करें, मैं इसे सरल, गहन और शायद थोड़ा मज़ेदार तरीके से तोड़ने के लिए यहाँ हूँ!

कल्पना कीजिए कि आप किसी पार्टी में हैं? आप और आपके सभी दोस्त टोपी पहने हुए हैं। लेकिन केवल एक टोपी है जिसे हर किसी को साझा करना होगा। जावा में स्टेटिक कीवर्ड मूलतः यही करता है! प्रत्येक मित्र के लिए एक टोपी बनाने के बजाय (जो गड़बड़ हो सकती है), आपके पास एक टोपी है जो समूह-वर्ग- से संबंधित है और आप सभी इसे बारी-बारी से पहन सकते हैं।

अब जब हमारे मन में वह तस्वीर आ गई है, तो आइए जानें कि जावा में स्टेटिक वास्तव में क्या करता है।


स्थैतिक सम का क्या अर्थ है?

सरल शब्दों में, जब आप जावा में स्टेटिक कीवर्ड का उपयोग करते हैं, तो आप कहते हैं, "अरे, यह चीज़ यहीं क्लास की है, न कि उस क्लास की किसी विशिष्ट वस्तु की।"

इसका मतलब यह है:

  1. ऑब्जेक्ट की कोई आवश्यकता नहीं: स्थिर चर या विधि का उपयोग करने के लिए आपको कोई ऑब्जेक्ट बनाने की आवश्यकता नहीं है। बस इसे सीधे कॉल करें!
  2. सभी ऑब्जेक्ट्स में साझा: यदि आप ऑब्जेक्ट बनाते हैं, तो वे सभी समान स्थिर सामग्री साझा करते हैं। एक बदलाव हर किसी को प्रभावित करता है. यह एक वैश्विक पार्टी टोपी की तरह है?!

स्टेटिक वेरिएबल्स: द पार्टी हैट?

एक स्थिर चर उस एक टोपी की तरह है जिसे हर कोई साझा करता है। यदि आप टोपी बदलते हैं (उदाहरण के लिए, उसमें एक पंख चिपका दें), प्रत्येक व्यक्ति परिवर्तन देखता है।

उदाहरण:

class Party {
    static int numberOfGuests = 0; // static variable

    Party() {
        numberOfGuests  ;  // Increment the guest count every time someone joins the party
    }
}

public class Main {
    public static void main(String[] args) {
        Party guest1 = new Party();
        Party guest2 = new Party();
        Party guest3 = new Party();

        System.out.println(Party.numberOfGuests);  // Output: 3 ?
    }
}

उदाहरण में, सभी अतिथि numberOfGuests वैरिएबल साझा करते हैं। प्रत्येक नए अतिथि को अपनी स्वयं की अतिथि गणना नहीं मिलती (अराजकता की कल्पना करें!)। इसके बजाय, हर कोई समान गिनती अपडेट करता है। अब, इससे कोई फर्क नहीं पड़ता कि कितने मेहमान आते हैं, मेहमानों की संख्या केवल एक है, और यह पार्टी वर्ग से संबंधित है, किसी व्यक्तिगत अतिथि से नहीं।


स्टेटिक तरीके: पिज़्ज़ा डिलीवरी लड़का?

स्टेटिक तरीके पार्टी में पिज़्ज़ा डिलीवरी करने वालों की तरह होते हैं—आप उन्हें कॉल कर सकते हैं, और वे निमंत्रण (ऑब्जेक्ट) की आवश्यकता के बिना आ जाएंगे। इससे कोई फर्क नहीं पड़ता कि आपकी कितनी पार्टियाँ हैं, एक ही पिज़्ज़ा वाला उन सभी को पिज़्ज़ा पहुँचाता है? आप बस पिज़्ज़ा स्थान (कक्षा) को कॉल करें, और वे आ जाएंगे!

उदाहरण:

class PizzaShop {
    static void deliverPizza() {
        System.out.println("Pizza delivered! ?");
    }
}

public class Main {
    public static void main(String[] args) {
        PizzaShop.deliverPizza();  // No need to create a PizzaShop object
    }
}

उपरोक्त उदाहरण में, आपको पिज़्ज़ा प्राप्त करने के लिए पिज़्ज़ाशॉप ऑब्जेक्ट बनाने की आवश्यकता नहीं है। आपने विधि को सीधे कक्षा से बुलाया। क्योंकि आप हर बार भूख लगने पर एक दुकान क्यों बनाना चाहेंगे?


स्टेटिक ब्लॉक: डीजे की ध्वनि जांच?

पार्टी शुरू होने से पहले, डीजे ध्वनि की जांच करता है, है ना? यह एक तरह से स्थैतिक ब्लॉक जैसा है। यह एक बार चलता है, इससे पहले कि कुछ और हो, यह सुनिश्चित करने के लिए कि सब कुछ ठीक जगह पर है।

उदाहरण:

class Party {
    static String music;

    // Static block to set up the DJ's playlist ?
    static {
        music = "Let's Dance by David Bowie";
        System.out.println("Music is set up: "   music);
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println("Party is starting with: "   Party.music);
    }
}

किसी भी पार्टी के शुरू होने से पहले स्थैतिक ब्लॉक निष्पादित किया जाता है। संगीत पहले से सेट किया गया है, इसलिए जब मेहमान आते हैं, तो वे पहले से ही थिरकने लगते हैं?


स्टेटिक नेस्टेड क्लासेस: वीआईपी क्षेत्र?

स्टेटिक नेस्टेड क्लासेस पार्टी में वीआईपी सेक्शन की तरह हैं। वे मुख्य कार्यक्रम के अंदर हैं, लेकिन वे स्वतंत्र हैं—वीआईपी अनुभाग तक पहुंचने के लिए आपको कोई पार्टी बनाने की आवश्यकता नहीं है।

उदाहरण:

क्लास पार्टी { स्थैतिक वर्ग VIPArea { शून्य अनन्यसेवा() { System.out.println('वीआईपी क्षेत्र में आपका स्वागत है!'); } } } सार्वजनिक वर्ग मुख्य { सार्वजनिक स्थैतिक शून्य main (String [] args) { पार्टी.वीआईपीएरिया वीआईपी = नई पार्टी.वीआईपीएरिया(); // किसी पार्टी ऑब्जेक्ट की कोई आवश्यकता नहीं है वीआईपी.एक्सक्लूसिवसर्विस(); // आउटपुट: वीआईपी क्षेत्र में आपका स्वागत है! ? } }
class Party {
    static class VIPArea {
        void exclusiveService() {
            System.out.println("Welcome to the VIP area! ?");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Party.VIPArea vip = new Party.VIPArea();  // No need for a Party object
        vip.exclusiveService();  // Output: Welcome to the VIP area! ?
    }
}
भले ही वीआईपी क्षेत्र पार्टी का हिस्सा है, लेकिन इसका उपयोग करने के लिए आपको पूर्ण विकसित पार्टी की आवश्यकता नहीं है। यह अकेला खड़ा है—एक उग्र कार्यक्रम के अंदर एक शांत, शांत वीआईपी लाउंज की तरह।


स्टेटिक का उपयोग क्यों करें?

अब, आप सोच रहे होंगे,

"यह सब अच्छा है, लेकिन मुझे वास्तव में स्टेटिक का उपयोग कब करना चाहिए?" खैर, यहां चीट शीट है:

  1. स्थिरांकों के लिए: चीजें जो कभी नहीं बदलतीं (जैसे पाई)। स्थिरांक के लिए स्टैटिक फ़ाइनल का उपयोग करें, उदाहरण के लिए, स्टैटिक फ़ाइनल डबल पीआई = 3.14159;
  2. उपयोगिता विधियों के लिए: ऐसे कार्य जो किसी ऑब्जेक्ट स्थिति पर निर्भर नहीं होते हैं। Math.pow() के बारे में सोचें।
  3. साझा डेटा के लिए: जब किसी वर्ग के सभी उदाहरणों को एक मान साझा करना चाहिए, जैसे कि यह गिनना कि कोई चीज़ कितनी बार बनाई गई है।
  4. दक्षता के लिए: जब आपको किसी वस्तु की आवश्यकता न हो तो उसे बनाने से बचें। इसके बजाय बस एक स्थिर विधि या चर का उपयोग करें!

पर्दे के पीछे: स्थिर कैसे काम करता है? ?️

ठीक है, पर्दे के पीछे झाँकने का समय आ गया है। यहां बताया गया है कि जादू कैसे होता है:

  1. मेमोरी प्रबंधन: स्थिर चर और विधियां मेमोरी के विधि क्षेत्र में रहती हैं (ढेर में नहीं जहां वस्तुएं रहती हैं)। इसका मतलब यह है कि जब क्लास पहली बार लोड होती है तो उन्हें एक बार लोड किया जाता है, और प्रोग्राम समाप्त होने तक वे वहीं रहते हैं।
  2. इनिशियलाइज़ेशन: स्टेटिक वेरिएबल्स और ब्लॉक्स को तब इनिशियलाइज़ किया जाता है जब क्लास को मेमोरी में लोड किया जाता है (न कि जब ऑब्जेक्ट बनाए जाते हैं)। इसलिए, वे किसी भी वस्तु के बनने से पहले उपयोग के लिए तैयार हैं।
  3. पहुंच: आपको स्थिर चर या विधियों तक पहुंचने के लिए किसी ऑब्जेक्ट की आवश्यकता नहीं है क्योंकि वे वर्ग से संबंधित हैं, किसी विशिष्ट ऑब्जेक्ट से नहीं।
यह मेहमानों के आने से पहले स्नैक टेबल स्थापित करने जैसा है। आपको प्रत्येक अतिथि को अपना भोजन लाने के लिए कहने की ज़रूरत नहीं है - वे केवल साझा नाश्ते से अपनी मदद करते हैं?.


सावधानी: इसे ज़्यादा मत करो! ?

ज्यादातर चीजों की तरह, बहुत अधिक स्थैतिकता एक बुरी चीज हो सकती है। यहां कुछ चेतावनियां दी गई हैं:

  • कोई वस्तु नहीं, गैर-स्थैतिक सामग्री तक कोई पहुंच नहीं: स्थैतिक विधियां गैर-स्थैतिक (उदाहरण) चर या विधियों तक नहीं पहुंच सकतीं क्योंकि वे वर्ग से संबंधित हैं, किसी वस्तु से नहीं। दूसरे शब्दों में, पिज़्ज़ा वाला आपको प्लेलिस्ट चुनने में मदद नहीं कर सकता—वह केवल पिज़्ज़ा से संबंधित है?.
  • थ्रेड सुरक्षा: यदि कई थ्रेड एक ही स्थिर चर को संशोधित करते हैं, तो चीजें गड़बड़ हो सकती हैं (जब तक कि आप सिंक्रनाइज़ेशन को संभाल नहीं लेते)। कल्पना कीजिए कि दो मेहमान एक ही टोपी के लिए लड़ रहे हैं - अराजकता फैल जाती है! ?

समापन: संक्षेप में स्थिर

जावा में स्टेटिक कीवर्ड एक पार्टी में डीजे, पिज़्ज़ा वाले और वीआईपी लाउंज की तरह है - यह सब कुछ आसान, अधिक कुशल और सभी मेहमानों के बीच साझा करता है। चाहे आप उपयोगिता विधियों, साझा किए गए डेटा से निपट रहे हों, या केवल मेमोरी सहेजना चाहते हों, स्टेटिक आपका मित्र है।

लेकिन याद रखें, हर चीज़ को सभी के लिए स्थिर मुफ़्त में न बदल दें! इसे बुद्धिमानी से उपयोग करें, और आपका कोड साफ़, कुशल और अराजकता से मुक्त होगा?.


इतना ही! अब आप एक पेशेवर की तरह कुछ स्थिर ज्ञान छोड़ने के लिए तैयार हैं?


विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/akshay_gengaje/the-magic-of-static-in-java-one-for-all-and-all-for-one-1j0o?1 यदि कोई उल्लंघन है , कृपया स्टडी_गोलंग @163.कॉमडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3