जावा स्थैतिक चर विधियों से देखें :
- यह एक वैरिएबल है जो क्लास के अंतर्गत आता है और ऑब्जेक्ट (उदाहरण) के लिए नहीं
- निष्पादन की शुरुआत में केवल एक बार स्टेटिक चर को आरंभ किया जाता है। किसी भी उदाहरण चर की शुरुआत से पहले इन चरों को पहले शुरू किया जाएगा
- कक्षा के सभी उदाहरणों द्वारा साझा की जाने वाली एक प्रति
- एक स्थिर चर को सीधे वर्ग नाम से एक्सेस किया जा सकता है और इसके लिए किसी वस्तु की आवश्यकता नहीं होती है।
इंस्टेंस और वर्ग (स्थिर) चर स्वचालित रूप से मानक डिफ़ॉल्ट मानों से आरंभिक होते हैं यदि आप उन्हें जानबूझकर आरंभ करने में विफल होते हैं। हालाँकि स्थानीय चर स्वचालित रूप से आरंभिक नहीं होते हैं, आप एक प्रोग्राम को संकलित नहीं कर सकते हैं जो किसी स्थानीय चर को आरंभ करने में विफल रहता है या उपयोग किए जाने से पहले उस स्थानीय चर का मान निर्दिष्ट नहीं करता है।
संकलक वास्तव में क्या करता है, आंतरिक रूप से एक एकल वर्ग आरंभीकरण दिनचर्या का उत्पादन करता है जो सभी स्थिर वैरिएबल इनिशियलाइज़र और कोड के सभी स्टैटिक इनिशियलाइज़र ब्लॉकों को जोड़ती है, इस क्रम में कि वे कक्षा घोषणा में दिखाई देते हैं। यह एकल आरंभीकरण प्रक्रिया स्वचालित रूप से चलती है, एक बार ही, जब कक्षा पहली बार भरी जाती है।
आंतरिक कक्षाओं के मामले में , उनके पास स्थिर क्षेत्र नहीं हो सकते हैं
एक आंतरिक वर्ग एक नेस्टेड वर्ग है जो स्पष्ट रूप से या स्पष्ट रूप से घोषित नहीं है static
।
...
आंतरिक वर्ग स्थैतिक आरंभीकरणकर्ता ()8.7) या सदस्य इंटरफेस की घोषणा नहीं कर सकते ...
हो सकता है कि भीतर के वर्ग स्थिर सदस्यों की घोषणा न करें, जब तक कि वे निरंतर चर न हों ...
JLS 8.1.3 आंतरिक कक्षाएं और संलग्नक उदाहरण देखें
final
जावा में फ़ील्ड को उनके घोषणा स्थान से अलग किया जा सकता है, हालांकि यह static final
फ़ील्ड पर लागू नहीं हो सकता है । नीचे दिए गए उदाहरण देखें।
final class Demo
{
private final int x;
private static final int z;
static
{
z = 10;
}
public Demo(int x)
{
this.x=x;
}
}
ऐसा इसलिए है क्योंकि प्रकार के प्रत्येक उदाहरण के साथ संबंधित प्रकारों की सिर्फ एक प्रति है static
, उदाहरण के चर के साथ प्रकार के प्रत्येक उदाहरण के साथ जुड़े हुए हैं और अगर हम निर्माणकर्ता के भीतर z
प्रकार static final
को आरंभीकृत करने का प्रयास करते हैं, तो यह static final
प्रकार के क्षेत्र को फिर से संगठित करने का प्रयास करेगा। z
क्योंकि कंस्ट्रक्टर को क्लास के प्रत्येक इंस्टेंटेशन पर चलाया जाता है जो कि स्थिर final
फ़ील्ड में नहीं होना चाहिए ।