हाँ, स्टेटिक वेरिएबल को कंस्ट्रक्टर में आरंभ किया जा सकता है, लेकिन यह अनुशंसित नहीं है क्योंकि कंस्ट्रक्टर प्रति इंस्टेंस चलता है, जिससे स्टेटिक फ़ील्ड बार-बार ओवरराइट होती है।
उदाहरण (संभव लेकिन खराब अभ्यास)
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); // Krishna
System.out.println(DefaultExample.age); // 25
}
}आउटपुट
Krishna 25
Final + Static: कंस्ट्रक्टर में अनुमति नहीं
यदि एक वेरिएबल static final है, तो इसे कंस्ट्रक्टर में आरंभ नहीं किया जा सकता। कंपाइलर इसे पुनर्असाइनमेंट मानता है।
public class DefaultExample {
static final String name;
static final int age;
DefaultExample() {
name = "Krishna"; // संकलन त्रुटि
age = 25; // संकलन त्रुटि
}
}संकलन त्रुटि
DefaultExample.java:5: error: cannot assign a value to final variable name
name = "Krishna";
^सही दृष्टिकोण
static finalको घोषणा या स्थैतिक ब्लॉक में आरंभ करें।- साधारण
staticफ़ील्ड्स को स्थैतिक ब्लॉक या घोषणा पर आरंभ करें, कंस्ट्रक्टर में नहीं।