कक्षा/स्थैतिक चर एक वर्ग से संबंधित होते हैं, उदाहरण चर की तरह ही उन्हें किसी वर्ग के भीतर, किसी भी विधि के बाहर, लेकिन स्थिर कीवर्ड के साथ घोषित किया जाता है।
वे संकलन समय पर उपयोग करने के लिए उपलब्ध हैं, आप कक्षा को इंस्टेंट करने से पहले/बिना उन तक पहुंच सकते हैं, पूरे वर्ग में स्थिर क्षेत्र की केवल एक प्रति उपलब्ध है यानी स्थिर क्षेत्र का मूल्य सभी वस्तुओं में समान होगा। आप स्थिर कीवर्ड का उपयोग करके एक स्थिर फ़ील्ड को परिभाषित कर सकते हैं।
यदि आप किसी वर्ग में एक स्थिर चर घोषित करते हैं, यदि आपने इसे प्रारंभ नहीं किया है, तो ठीक वैसे ही जैसे आवृत्ति चर के साथ संकलक इन्हें डिफ़ॉल्ट कन्स्ट्रक्टर में डिफ़ॉल्ट मानों के साथ प्रारंभ करता है।
हाँ, आप इन मानों को कंस्ट्रक्टर का उपयोग करके इनिशियलाइज़ भी कर सकते हैं।
उदाहरण
public class DefaultExample { static String name; static int age; DefaultExample() { name = "Krishna"; age = 25; } public static void main(String args[]) { new DefaultExample(); System.out.println(DefaultExample.name); System.out.println(DefaultExample.age); } }
आउटपुट
Krishna 25
अंतिम और स्थिर घोषित करना
लेकिन अगर आप एक इंस्टेंस वैरिएबल स्टैटिक घोषित करते हैं और फाइनल जावा कंपाइलर इसे डिफॉल्ट कंस्ट्रक्टर में इनिशियलाइज़ नहीं करेगा, तो स्टैटिक और फाइनल वेरिएबल्स को इनिशियलाइज़ करना अनिवार्य है। यदि आप संकलन समय त्रुटि उत्पन्न नहीं करते हैं।
उदाहरण
public class DefaultExample { static final String name; static final int age; public static void main(String args[]) { new DefaultExample(); System.out.println(DefaultExample.name); System.out.println(DefaultExample.age); } }
संकलन समय त्रुटि
DefaultExample.java:2: error: variable name not initialized in the default constructor static final String name; ^ DefaultExample.java:3: error: variable age not initialized in the default constructor static final int age; ^ 2 errors
लेकिन, यदि आप एक वैरिएबल को इनिशियलाइज़ करने का प्रयास करते हैं जिसे अंतिम . घोषित किया गया है और स्थिर , कंपाइलर इसे वेरिएबल को इनिशियलाइज़ करने के प्रयास के रूप में मानता है और एक कंपाइल टाइम एरर उत्पन्न होगा।
उदाहरण
public class DefaultExample { static final String name; static final int age; DefaultExample() { name = "Krishna"; age = 25; } public static void main(String args[]) { new DefaultExample(); System.out.println(DefaultExample.name); System.out.println(DefaultExample.age); } }
संकलन समय त्रुटि
OutputDeviceAssignedDefaultExample.java:5: error: cannot assign a value to final variable name name = "Krishna"; ^ DefaultExample.java:6: error: cannot assign a value to final variable age age = 25; ^ 2 errors