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वर्गाच्या सामान्य व्हेरिएबल्समध्ये सुधारक जोडा. ते सर्व सामान्य वस्तूंमधून अदृश्य होतील आणि स्थिर वस्तूमध्ये दिसतील. समजा आपण आणि व्हेरिएबल्स स्थिर करण्याचे ठरवले . agenameमग कोड असे दिसेल:
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