1. स्थैतिक चर
जब किसी क्लास को मेमोरी में लोड किया जाता है तो एक स्टैटिक ऑब्जेक्ट तुरंत बन जाता है। यह ऑब्जेक्ट स्टैटिक क्लास वेरिएबल्स (स्टैटिक क्लास फील्ड्स) को स्टोर करता है। स्थैतिक वस्तु तब भी मौजूद होती है जब वर्ग की कोई साधारण (गैर-स्थैतिक) वस्तु नहीं बनाई गई हो।
जब हम एक वर्ग में चर घोषित करते हैं, तो हम संकेत देते हैं कि क्या वे सिर्फ एक बार बनाए जाएंगे, या क्या प्रत्येक वस्तु में इन चरों के अलग-अलग उदाहरण होने चाहिए। डिफ़ॉल्ट रूप से, प्रत्येक ऑब्जेक्ट के लिए प्रत्येक चर की एक नई प्रति बनाई जाती है।
एक स्थिर चर वर्ग की स्थिर वस्तु से बंधा होता है और इसका हमेशा एक ही उदाहरण होता है।
किसी क्लास में स्टैटिक वेरिएबल बनाने के लिए, आपको staticउसके नाम से पहले कीवर्ड लिखना होगा। स्थैतिक चर घोषित करने का सामान्य प्रारूप है:
static Type name = value;
यदि एक स्थिर चर को प्रारंभिक मान निर्दिष्ट नहीं किया गया है, तो इसे डिफ़ॉल्ट मान के साथ प्रारंभ किया गया है:
| प्रकार | डिफ़ॉल्ट मान |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
(एक ही बात के रूप में
) |
|
|
और कोई भी वर्ग |
|
उदाहरण:
| कोड | टिप्पणी |
|---|---|
|
|
|
|
|
|
|
|
|
एक वर्ग के अंदर, आप केवल उनके नाम का उपयोग करके इसके स्थिर चर का उल्लेख कर सकते हैं। लेकिन उन्हें किसी अन्य वर्ग से एक्सेस करने के लिए, आपको स्थैतिक चर के नाम से पहले वर्ग का नाम लिखना होगा।
ClassName.variable
उदाहरण:
| चर | कक्षा | अपनी कक्षा के बाहर एक चर तक पहुँचना |
|---|---|---|
|
|
|
|
|
|
|
|
चर है private। यह कक्षा के बाहर दिखाई नहीं देता। |
|
|
चर है private। यह कक्षा के बाहर दिखाई नहीं देता। |
|
|
चर है private। यह कक्षा के बाहर दिखाई नहीं देता। |
2. स्थैतिक और गैर-स्थैतिक चर के बीच अंतर
किसी वर्ग के गैर-स्थैतिक (साधारण) चर को उसी तरह से घोषित किया जाता है जैसे कि बिना कीवर्ड के static।
साधारण चर और स्थिर चर के बीच क्या अंतर है?
एक वर्ग के साधारण चर वर्ग की वस्तुओं (कक्षा के उदाहरण) से बंधे होते हैं, जबकि स्थैतिक चर वर्ग की स्थिर वस्तु से बंधे होते हैं।
यदि एक वर्ग के कई उदाहरण हैं, तो उनमें से प्रत्येक के पास गैर-स्थैतिक (साधारण) चर की अपनी प्रति है। किसी वर्ग के स्थैतिक चर हमेशा उसकी स्थिर वस्तु में संग्रहीत होते हैं और उनमें से केवल एक ही उदाहरण मौजूद होता है।
आप किसी वर्ग के साधारण चर (फ़ील्ड) तक तभी पहुँच सकते हैं जब आपके पास कक्षा की किसी वस्तु का संदर्भ हो। और कक्षा के अंदर के तरीके, बिल्कुल।
उदाहरण:
| एक वस्तु संदर्भ का उपयोग कर एक वर्ग के एक क्षेत्र तक पहुँचना |
|---|
|
आप कहीं से भी (दृश्यता संशोधक के लिए लेखांकन के बाद) स्थैतिक चर का उपयोग कर सकते हैं: सामान्य तरीकों से, उसी वर्ग के स्थिर तरीकों से, अन्य वर्गों के तरीकों से, आदि।
उदाहरण:
| किसी वस्तु संदर्भ का उपयोग किए बिना किसी वर्ग के स्थिर क्षेत्र तक पहुँचना |
|---|
|
मेमोरी कैसे व्यवस्थित होती है:
मान लीजिए कि हमारे पास Person4 क्षेत्रों वाला वर्ग है: दो स्थिर हैं और दो नहीं हैं।
public class Person
{
public static int count = 0;
public static int sum = 0;
public int age = 0;
public String name;
}
कक्षा लोड करने के तुरंत बाद
जब जावा मशीन Personक्लास लोड करना समाप्त कर लेती है, तो मेमोरी इस तरह दिखाई देगी:

पहली वस्तु बनाने के बाद
यदि हम कोई Personवस्तु बनाते हैं, तो चित्र यह बन जाता है:

कृपया ध्यान दें कि हालांकि दोनों वस्तुओं के दो चर हैं, ये अलग-अलग चर हैं: साधारण वस्तुओं में साधारण चर होते हैं, और स्थिर वस्तु में स्थिर चर होते हैं।
हमें और वस्तुओं की आवश्यकता है
चलिए दो और Personवस्तुएँ बनाते हैं। अब मेमोरी इस तरह दिखेगी:

कृपया ध्यान दें कि प्रत्येक वस्तु की अपनी आयु और नाम चर होते हैं।
static3. संशोधक को हटाना और जोड़ना
स्थिर से साधारण तक
क्या होता है यदि हम एक स्थिर चर लेते हैं और इसके संशोधक को हटाकर इसे सामान्य में बदल देते हैं static? उदाहरण के लिए, static int sumचर।
संशोधित कोड इस तरह दिखेगा:
public class Person
{
public static int count = 0;
public int sum = 0;
public int age = 0;
public String name;
}
स्मृति अब इस तरह दिखती है:

स्थैतिक चर स्थैतिक वस्तु से गायब हो गया, और अब प्रत्येक साधारण वस्तु का अपना sumचर है।
सामान्य से स्थिर तक
हम इसके विपरीत कर सकते हैं: staticसंशोधक को एक वर्ग के साधारण चर में जोड़ें। वे सभी सामान्य वस्तुओं से गायब हो जाएंगे और स्थिर वस्तु में दिखाई देंगे। मान लीजिए कि हम ageऔर nameचर को स्थिर बनाने का निर्णय लेते हैं। तब कोड इस तरह दिखेगा:
public class Person
{
public static int count = 0;
public int sum = 0;
public static int age = 0;
public static String name;
}
और अब मेमोरी इस तरह दिखेगी:
GO TO FULL VERSION