1. स्थानीय चर

आइए चर के बारे में अधिक गंभीर बात करें। लेकिन इस बार हम उनकी आंतरिक संरचना पर चर्चा नहीं करेंगे। इसके बजाय, हम इस बात पर ध्यान केंद्रित करेंगे कि वेरिएबल्स उस कोड के साथ कैसे इंटरैक्ट करते हैं जहां वे स्थित हैं।

विधियों के भीतर घोषित किए गए सभी चर स्थानीय चर कहलाते हैं । एक स्थानीय चर केवल कोड के ब्लॉक में मौजूद होता है जिसमें इसे घोषित किया जाता है। या, अधिक सटीक होने के लिए, यह कोड के उस ब्लॉक के अंत तक घोषित होने के क्षण से मौजूद है जिसमें इसे घोषित किया गया है।

सादगी के लिए, आइए एक उदाहरण पर विचार करें:

कोड परिवर्तनशील दृश्यता
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}


a
a
a
a, b
a, b
a, b
a, b, x
a, b, x
a, b
a, b
a
a

आइए एक बार फिर स्थानीय चरों तक पहुँचने के बारे में बात करते हैं। यहां कर्ली ब्रेसेस से युक्त कोड का एक ब्लॉक है: यह एक मेथड बॉडी, लूप की बॉडी, या सशर्त स्टेटमेंट के लिए कोड का एक ब्लॉक हो सकता है। कोड के ब्लॉक में घोषित एक चर कोड के उस ब्लॉक के अंत तक मौजूद रहता है।

यदि लूप के शरीर में एक चर घोषित किया जाता है, तो यह केवल लूप के शरीर में ही मौजूद रहेगा। यह लूप के प्रत्येक पुनरावृत्ति पर बनाया और नष्ट किया जाता है।

आप एक ही विधि में एक ही नाम के साथ दो स्थानीय चर घोषित नहीं कर सकते - प्रोग्राम संकलित नहीं होगा। लेकिन आप ऐसा कर सकते हैं यदि कोड के ब्लॉक जहां चर घोषित किए गए हैं वे ओवरलैप नहीं होते हैं।

उदाहरण:

कोड परिवर्तनशील दृश्यता
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     System.out.println(b);
   }

   if (a < 20)
   {
     int b = 20;
     System.out.println(b);
   }
}


a
a
a
a, b
a, b
a
a
a
a
a, b
a, b
a

हम केवल नाम के दूसरे स्थानीय चर को घोषित करने में सक्षम थे b क्योंकि पहला b चर उस कोड ब्लॉक में दिखाई नहीं देता है जहाँ दूसरा bचर घोषित किया गया है।


2. पैरामीटर्स

जैसा कि हमने पहले कहा, प्रत्येक विधि में वेरिएबल्स हो सकते हैं जिन्हें हम पैरामीटर कहते हैं। उनकी दृश्यता और जीवनकाल के बारे में क्या?

यह सब सीधा है। पैरामीटर तब बनते हैं जब निष्पादन विधि में प्रवेश करता है (अर्थात जब विधि का कोड निष्पादित करना शुरू करता है)। विधि समाप्त होने पर वे समाप्त हो जाते हैं। वे विधि के पूरे शरीर में दिखाई दे रहे हैं।

उदाहरण:

कोड परिवर्तनशील दृश्यता
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}

args
args, a
args, a
args, a
args, a, b
args, a, b
args, a, b
args, a, b, x
args, a, b, x
args, a, b
args, a, b
args, a
args, a

जैसा कि हमने पहले कहा, argsकेवल एक वेरिएबल है जिसका प्रकार स्ट्रिंग्स की एक सरणी है। और सभी मापदंडों की तरह, यह विधि के शरीर में हर जगह उपलब्ध है। उस ने कहा, हम आमतौर पर इसे अपने उदाहरणों में अनदेखा कर देते हैं।



3. एक वर्ग में चर

आपको स्तर 1 के पाठों से याद होगा कि एक कक्षा में विधियाँ और चर हो सकते हैं। मेथड्स को कभी-कभी इंस्टेंस मेथड्स और वेरिएबल्स - इंस्टेंस वेरिएबल्स या फील्ड्स कहा जाता है। ये वास्तव में जावा में पर्यायवाची हैं।

एक वर्ग के चर (या क्षेत्र) क्या हैं?

वे चर हैं जो एक विधि में नहीं, बल्कि एक वर्ग में घोषित किए जाते हैं।

उन्हें कक्षा के किसी भी (गैर स्थैतिक) विधि से एक्सेस किया जा सकता है। मोटे तौर पर, उदाहरण चर वे चर हैं जो एक वर्ग के सभी तरीकों द्वारा साझा किए जाते हैं।

उदाहरण:

कोड परिवर्तनशील दृश्यता
public class Solution
{
   public int count = 0;
   public int sum = 0;

   public void add(int data)
   {
     sum = sum + data;
     count++;
   }

   public void remove(int data)
   {
     sum = sum - data;
     count--;
   }
}


count
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum

इस उदाहरण में, हमारे पास दो विधियाँ हैं — add()और remove(). विधि और आवृत्ति चर को add()बढ़ाती है , और विधि  और चर को घटाती है । दोनों विधियां साझा आवृत्ति चर पर काम करती हैं।sumcountremove()sumcount

एक विधि निष्पादित होने पर स्थानीय चर मौजूद होते हैं। किसी वर्ग के उदाहरण चर तब तक किसी वर्ग की वस्तु के भीतर मौजूद होते हैं जब तक कि वह वस्तु मौजूद है। आप अगले स्तर में कक्षा की वस्तुओं के बारे में विवरण जानेंगे।


4. स्थैतिक चर

विधियों की तरह, एक वर्ग में चर स्थिर या गैर-स्थैतिक हो सकते हैं। स्थैतिक विधियाँ केवल स्थैतिक चर तक पहुँच सकती हैं।

स्तर 11 में, हम स्थैतिक चरों और विधियों की संरचना का विश्लेषण करेंगे और आप इन प्रतिबंधों के कारणों को समझेंगे।

एक स्थिर चर (वर्ग चर) बनाने के लिए, आपको staticइसकी घोषणा में कीवर्ड लिखना होगा।

स्थैतिक चर किसी वस्तु या उस वर्ग के उदाहरण के लिए बाध्य नहीं होते हैं जिसमें उन्हें घोषित किया जाता है। इसके बजाय, वे स्वयं वर्ग के हैं। इसलिए वे मौजूद हैं भले ही वर्ग का एक भी ऑब्जेक्ट नहीं बनाया गया हो । आप उन्हें अन्य वर्गों से एक निर्माण का उपयोग करके संदर्भित कर सकते हैं:

ClassName.variableName

उदाहरण:

कोड परिवर्तनशील दृश्यता
public class Solution
{
   public void add(int data)
   {
     Storage.sum = Storage.sum + data;
     Storage.count++;
   }

   public void remove(int data)
   {
     Storage.sum = Storage.sum - data;
     Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}

Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum



Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum

उपरोक्त उदाहरण में, हमने एक अलग Storageवर्ग बनाया,  उसमें count और चर को स्थानांतरित किया, और उन्हें स्थिर घोषित किया । सार्वजनिक स्थैतिक चर को किसी प्रोग्राम में किसी भी विधि से एक्सेस किया जा सकता है (और न केवल एक विधि से)।sum