खोज…


वाक्य - विन्यास

  • सार्वजनिक स्थैतिक int myVariable; // एक स्थिर चर की घोषणा
  • सार्वजनिक स्थिर myMethod () {} // एक स्थिर विधि की घोषणा
  • सार्वजनिक स्थिर अंतिम डबल MY_CONSTANT; // एक स्थिर चर की घोषणा करना जो कक्षा के सभी उदाहरणों के बीच साझा किया जाता है
  • सार्वजनिक अंतिम डबल MY_CONSTANT; // कक्षा के इस उदाहरण के लिए एक स्थिर चर की घोषणा (सबसे अच्छा एक निर्माणकर्ता में उपयोग किया जाता है जो प्रत्येक उदाहरण के लिए एक अलग स्थिरांक उत्पन्न करता है)

स्थिरांक का उपयोग स्थिर करने के लिए

चूंकि static कीवर्ड का उपयोग त्वरित वर्ग के बिना फ़ील्ड और विधियों तक पहुंचने के लिए किया जाता है, इसलिए इसका उपयोग अन्य वर्गों में उपयोग के लिए स्थिरांक घोषित करने के लिए किया जा सकता है। ये चर कक्षा के हर पल में स्थिर रहेंगे। सम्मेलन द्वारा, static चर हमेशा ALL_CAPS होते हैं और ऊंट मामले के बजाय अंडरस्कोर का उपयोग करते हैं। उदाहरण के लिए:

 static E STATIC_VARIABLE_NAME

जैसे ही स्थिरांक नहीं बदल सकते, static को final संशोधक के साथ भी उपयोग किया जा सकता है:

उदाहरण के लिए, pi के गणितीय स्थिरांक को परिभाषित करने के लिए:

public class MathUtilities {
    
    static final double PI = 3.14159265358

}

जिसका उपयोग किसी भी वर्ग में एक उदाहरण के रूप में किया जा सकता है:

public class MathCalculations {
   
    //Calculates the circumference of a circle
    public double calculateCircumference(double radius) {
        return (2 * radius * MathUtilities.PI);
    }

}

इसके साथ स्थैतिक का उपयोग करना

स्टेटिक एक विधि या परिवर्तनशील भंडारण देता है जिसे कक्षा के प्रत्येक उदाहरण के लिए आवंटित नहीं किया जाता है। बल्कि, स्थिर चर सभी वर्ग के सदस्यों के बीच साझा किया जाता है। संयोग से, स्टैटिक वैरिएबल का इलाज करने की कोशिश करना, जैसे कि कक्षा के उदाहरण के एक सदस्य को चेतावनी के परिणामस्वरूप होगा:

public class Apple {
    public static int test;
    public int test2;
}

Apple a = new Apple();
a.test = 1; // Warning
Apple.test = 1; // OK
Apple.test2 = 1; // Illegal: test2 is not static
a.test2 = 1; // OK

जिन विधियों को स्थिर घोषित किया जाता है, वे उसी तरह व्यवहार करते हैं, लेकिन एक अतिरिक्त प्रतिबंध के साथ:

आप उनमें this कीवर्ड का उपयोग नहीं कर सकते हैं!

public class Pineapple {

    private static int numberOfSpikes;   
    private int age;

    public static getNumberOfSpikes() {
        return this.numberOfSpikes; // This doesn't compile
    }


    public static getNumberOfSpikes() {
        return numberOfSpikes; // This compiles
    }

}

सामान्य तौर पर, यह सामान्य तरीकों कि एक वर्ग के विभिन्न उदाहरणों (जैसे क्लोन तरीके के रूप में) के लिए लागू की घोषणा करने के सबसे अच्छा है static है, जबकि तरह के तरीकों रखने equals() गैर स्थिर के रूप में। main एक जावा प्रोग्राम की विधि हमेशा स्थिर है, जिसका अर्थ है कि कीवर्ड this के अंदर नहीं किया जा सकता main()

स्थैतिक संदर्भ से गैर-स्थैतिक सदस्य का संदर्भ

स्थैतिक चर और विधियाँ एक उदाहरण का हिस्सा नहीं हैं, हमेशा उस चर की एक ही प्रतिलिपि होगी चाहे आप किसी विशेष वर्ग की कितनी ही वस्तुएँ बनाएँ।

उदाहरण के लिए, आप स्थिरांक की एक अपरिवर्तनीय सूची रखना चाहते हैं, इसे स्थिर रखने और इसे स्थिर विधि के अंदर एक बार प्रारंभ करने के लिए एक अच्छा विचार होगा। यदि आप नियमित रूप से किसी विशेष वर्ग के कई उदाहरण बना रहे हैं, तो यह आपको एक महत्वपूर्ण प्रदर्शन लाभ देगा।

इसके अलावा आप एक वर्ग में एक स्थिर ब्लॉक भी कर सकते हैं। आप एक स्थिर चर के लिए एक डिफ़ॉल्ट मान असाइन करने के लिए इसका उपयोग कर सकते हैं। उन्हें केवल एक बार निष्पादित किया जाता है जब कक्षा को मेमोरी में लोड किया जाता है।

उदाहरण चर जैसा कि नाम का सुझाव एक विशेष वस्तु की आवृत्ति पर निर्भर है, वे इसके बारे में सनक की सेवा करने के लिए जीते हैं। आप किसी वस्तु के किसी विशेष जीवन चक्र के दौरान उनके साथ खेल सकते हैं।

किसी वर्ग के स्थिर क्षेत्र के अंदर उपयोग किए जाने वाले वर्ग के सभी क्षेत्र और विधियां स्थिर या स्थानीय होनी चाहिए। यदि आप उदाहरण (गैर-स्थिर) चर या विधियों का उपयोग करने का प्रयास करते हैं, तो आपका कोड संकलित नहीं होगा।

public class Week {
    static int daysOfTheWeek = 7; // static variable
    int dayOfTheWeek; // instance variable
    
    public static int getDaysLeftInWeek(){
        return Week.daysOfTheWeek-dayOfTheWeek; // this will cause errors
    }

    public int getDaysLeftInWeek(){
        return Week.daysOfTheWeek-dayOfTheWeek; // this is valid
    }

    public static int getDaysLeftInTheWeek(int today){
        return Week.daysOfTheWeek-today; // this is valid
    }
    
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow