वेरिएबल एक प्रकार का कंटेनर है, जिसमे कोई वैल्यू (जैसे – text, image, video आदि) सेव रहती है और यह Computer की मेमोरी में हम वैल्यू को कहा सेट कर रहे है इसकी लोकेशन बताता है. वेरिएबल के नाम से ही Computer हमारी फाइल को सेव रखता है. इसे यदि आसान भाषा में समझे तो मान लीजिए की एक Box या संदूक है जिसमे मैं अपनी कुछ things को रखता हु, अब जब भी मुझे उसमे पड़े हुए सामान या वस्तु की आवश्यकता होगी तो में उसी संदूक को खोल कर देखूंगा. उसी प्रकार जब हम किसी value को जावा के माध्यम से स्टोर करेंगे तो वो एक विशेष लोकेशन पर जाकर सेव होती है जिसे हम वेरिएबल कहते है. उदाहरण के लिए नीचे लिखे कोड में Data एक Variable है, int DataType है और 200 एक वैल्यू है जिसे हम स्टोर करना चाहते है.
एक वेरिएबल एक कंटेनर है जो जावा प्रोग्राम को निष्पादित करते समय मान रखता है. डेटा प्रकार के साथ एक वैरिएबल असाइन किया गया है. वेरिएबल मेमोरी लोकेशन का एक नाम है. जावा में तीन प्रकार के चर हैं: स्थानीय, उदाहरण और स्थिर. जावा में दो प्रकार के डेटा प्रकार हैं: आदिम और गैर-आदिम.
एक चर एक नामित स्मृति स्थान है जो किसी विशेष डेटा प्रकार का डेटा मान रखता है. जावा में एक वेरिएबल एक प्रकार का कंटेनर है जिसमें प्रोग्राम निष्पादन के दौरान मान होता है. चर एक प्रोग्राम में भंडारण की एक बुनियादी इकाई है जो आरक्षित भंडारण स्थानों का प्रतिनिधित्व करता है, जिनके मूल्यों को एक कार्यक्रम के निष्पादन के दौरान हेरफेर किया जा सकता है. हम डेटाटाइप के साथ एक वैरिएबल असाइन करते हैं. जैसा कि नाम से ही पता चलता है, चर शब्द को 2 शब्दों में विभाजित किया जा सकता है- "भिन्न" + "सक्षम", जिसका अर्थ है कि चर का मान बदल सकता है.
चरों को सांकेतिक चर भी कहा जाता है क्योंकि उन्हें नाम दिया जाता है.
एक चर एक स्मृति क्षेत्र है, और यह स्मृति स्थान तब प्रभावित होता है जब चरों पर कोई हेरफेर या संचालन किया जाता है.
जावा में, हमें सभी वेरिएबल्स का उपयोग करने से पहले उन्हें घोषित करना चाहिए.
प्रत्येक चर का एक विशिष्ट डेटा प्रकार होता है, जो इसकी मेमोरी और डेटा के प्रकार को निर्धारित करता है जिसे वह संग्रहीत कर सकता है.
चर का उपयोग आमतौर पर पाठ, कोड (जैसे राज्य कोड, शहर कोड, आदि) से लेकर संख्याओं, जटिल गणनाओं के अस्थायी परिणामों आदि तक की जानकारी को संग्रहीत करने के लिए किया जाता है.
जावा में वेरिएबल एक डेटा कंटेनर है जो जावा प्रोग्राम निष्पादन के दौरान डेटा मानों को सहेजता है. प्रत्येक चर को एक डेटा प्रकार सौंपा गया है जो उस प्रकार के मूल्य और मात्रा को निर्दिष्ट करता है जो वह धारण कर सकता है. वेरिएबल डेटा का मेमोरी लोकेशन नाम है. एक वैरिएबल एक मेमोरी लोकेशन को दिया गया नाम है. यह एक प्रोग्राम में स्टोरेज की मूल इकाई है.
एक चर एक ऐसा नाम है जो एक मूल्य से जुड़ा होता है जिसे बदला जा सकता है. उदाहरण के लिए जब मैं int i=10; यहाँ चर नाम i है जो मान 10 से जुड़ा है, int एक डेटा प्रकार है जो दर्शाता है कि यह चर पूर्णांक मान रख सकता है. हम अगले ट्यूटोरियल में डेटा प्रकारों को कवर करेंगे. इस ट्यूटोरियल में, हम वेरिएबल्स के बारे में चर्चा करेंगे.
एक चर स्मृति में आवंटित आरक्षित क्षेत्र का नाम है. दूसरे शब्दों में, यह मेमोरी लोकेशन का नाम है. यह "भिन्न + सक्षम" का एक संयोजन है जिसका अर्थ है कि इसका मूल्य बदला जा सकता है.
int data=50;//Here data is variable
एक चर घोषित करने के लिए इस सिंटैक्स का पालन करें:-
data_type variable_name = value;
यहां मान वैकल्पिक है क्योंकि जावा में, आप पहले वेरिएबल घोषित कर सकते हैं और फिर बाद में इसे मान निर्दिष्ट कर सकते हैं. उदाहरण के लिए: यहाँ num एक वेरिएबल है और int एक डेटा टाइप है. हम अगले ट्यूटोरियल में डेटा प्रकार पर चर्चा करेंगे, इसलिए इसके बारे में ज्यादा चिंता न करें, बस यह समझें कि int डेटा प्रकार इस संख्या चर को पूर्णांक मान रखने की अनुमति देता है. आप यहां डेटा प्रकार पढ़ सकते हैं, लेकिन मैं आपको अगले एक पर जाने से पहले इस गाइड को पढ़ना समाप्त करने की सलाह दूंगा.
int num;
इसी तरह, हम उन्हें घोषित करते समय वेरिएबल्स को मान असाइन कर सकते हैं, जैसे:-
char ch = 'A'; int number = 100;
या हम इसे इस तरह कर सकते हैं: -
char ch; int number; ... ch = 'A'; number = 100;
1) चर नामकरण में सफेद स्थान नहीं हो सकते, उदाहरण के लिए: int num ber = 100; अमान्य है क्योंकि चर नाम में स्थान है.
2) परिवर्तनीय नाम विशेष वर्णों जैसे $ और _ से शुरू हो सकता है
3) जावा कोडिंग मानकों के अनुसार चर नाम छोटे अक्षर से शुरू होना चाहिए, उदाहरण के लिए int संख्या; एक से अधिक शब्दों वाले लंबे चर नामों के लिए इसे इस तरह करें: int
smallNumber; इंट बिगनंबर; (दूसरे शब्द की शुरुआत बड़े अक्षर से करें).
4) जावा में वेरिएबल नाम केस सेंसिटिव होते हैं.
जावा में तीन प्रकार के वेरिएबल होते हैं.
1) स्थानीय चर 2) स्थिर (या वर्ग) चर 3) आवृत्ति चर
स्थैतिक चर को वर्ग चर के रूप में भी जाना जाता है क्योंकि वे वर्ग से जुड़े होते हैं और वर्ग के सभी उदाहरणों के लिए सामान्य होते हैं. उदाहरण के लिए, यदि मैं एक वर्ग की तीन वस्तुएं बनाता हूं और इस स्थिर चर का उपयोग करता हूं, तो यह सभी के लिए सामान्य होगा, किसी एक वस्तु का उपयोग करके चर में किए गए परिवर्तन तब प्रतिबिंबित होंगे जब आप इसे अन्य वस्तुओं के माध्यम से एक्सेस करेंगे.
एक वैरिएबल जिसे क्लास के अंदर घोषित किया जाता है, लेकिन मेथड, कंस्ट्रक्टर या ब्लॉक के अंदर नहीं, स्टैटिक कीवर्ड के साथ स्टैटिक या क्लास वेरिएबल कहलाता है. स्थैतिक चर को वर्ग चर भी कहा जाता है क्योंकि वे वर्ग से जुड़े होते हैं और वर्ग के सभी उदाहरणों के लिए सामान्य होते हैं. अर्थात्, स्थिर चर की एक प्रति कक्षा की सभी वस्तुओं के बीच साझा की जाती है. उदाहरण के लिए, यदि हम एक वर्ग के कई ऑब्जेक्ट बनाते हैं और ऑब्जेक्ट्स का उपयोग करके स्टैटिक वेरिएबल का उपयोग करते हैं, तो यह सभी के लिए सामान्य होगा, अर्थात, किसी एक ऑब्जेक्ट का उपयोग करके वेरिएबल में किए गए परिवर्तन तब प्रतिबिंबित होंगे जब हम इसे अन्य ऑब्जेक्ट्स के माध्यम से एक्सेस करेंगे. कक्षा का. प्रोग्राम के निष्पादन की शुरुआत में स्टेटिक वेरिएबल्स बनाए जाते हैं और प्रोग्राम के निष्पादन के बाद स्वचालित रूप से नष्ट हो जाते हैं. उदाहरण चर के विपरीत, प्रति वर्ग एक स्थिर चर की केवल एक प्रति होती है, भले ही हम कक्षा से कितनी भी वस्तुएँ बनाते हों. स्थैतिक चर का प्रारंभ अनिवार्य नहीं है. यदि हम इसे किसी मान के साथ प्रारंभ नहीं करते हैं, तो यह आवृत्ति चर के समान एक डिफ़ॉल्ट मान प्राप्त करता है. स्थैतिक चर को सार्वजनिक/निजी, अंतिम और स्थिर के रूप में घोषित किया जा सकता है. ये चर स्थिर चर हैं जो अपने प्रारंभिक मूल्यों से कभी नहीं बदलते हैं. स्टैटिक/क्लास वेरिएबल्स को स्टोर करने के लिए स्टेटिक मेमोरी एलोकेशन बहुत मददगार होता है. हम स्टैटिक वेरिएबल्स को क्लास के नाम से कॉल करके एक्सेस कर सकते हैं, जो कि ClassName.variableName है. हम स्टैटिक वेरिएबल्स को स्टैटिक मेथड्स और स्टैटिक ब्लॉक्स के अंदर भी सीधे एक्सेस कर सकते हैं. स्थिर चर की दृश्यता आवृत्ति चर के समान है. हालाँकि, हम ज्यादातर स्थैतिक चर को सार्वजनिक घोषित करते हैं, क्योंकि वे कक्षा की सभी वस्तुओं के लिए उपलब्ध होने चाहिए. घोषणा के दौरान या कंस्ट्रक्टर के भीतर स्थिर चर के मान भी असाइन किए जा सकते हैं. इसके अलावा, हम विशेष स्थैतिक प्रारंभकर्ता ब्लॉक में मान निर्दिष्ट कर सकते हैं.
public class StaticVarExample { public static String myClassVar="class or static variable"; public static void main(String args[]){ StaticVarExample obj = new StaticVarExample(); StaticVarExample obj2 = new StaticVarExample(); StaticVarExample obj3 = new StaticVarExample(); //All three will display "class or static variable" System.out.println(obj.myClassVar); System.out.println(obj2.myClassVar); System.out.println(obj3.myClassVar); //changing the value of static variable using obj2 obj2.myClassVar = "Changed Text"; //All three will display "Changed Text" System.out.println(obj.myClassVar); System.out.println(obj2.myClassVar); System.out.println(obj3.myClassVar); } }
class or static variable class or static variable class or static variable Changed Text Changed Text Changed Text
जैसा कि आप देख सकते हैं कि सभी तीन स्टेटमेंट एक ही आउटपुट प्रदर्शित करते हैं, भले ही उस इंस्टेंस के माध्यम से इसे एक्सेस किया जा रहा हो. इसलिए हम इस तरह की वस्तुओं का उपयोग किए बिना स्थिर चर का उपयोग कर सकते हैं:-
System.out.println(myClassVar);
ध्यान दें कि इस तरह केवल स्थिर चर का उपयोग किया जा सकता है. यह उदाहरण और स्थानीय चर के लिए लागू नहीं होता है.
कक्षा के प्रत्येक उदाहरण (वस्तुओं) में आवृत्ति चर की अपनी प्रति होती है. स्थिर चर के विपरीत, आवृत्ति चर की आवृत्ति चर की अपनी अलग प्रति होती है. हमने निम्नलिखित प्रोग्राम में ऑब्जेक्ट obj2 का उपयोग करके इंस्टेंस वैरिएबल वैल्यू को बदल दिया है और जब हमने तीनों ऑब्जेक्ट्स का उपयोग करके वेरिएबल प्रदर्शित किया, तो केवल obj2 मान बदल गया, अन्य अपरिवर्तित रहे. इससे पता चलता है कि उनके पास आवृत्ति चर की अपनी प्रति है.
एक वेरिएबल जिसे क्लास के अंदर घोषित किया जाता है लेकिन किसी भी मेथड, कंस्ट्रक्टर या ब्लॉक बॉडी के बाहर इंस्टेंस वेरिएबल कहा जाता है. एक आवृत्ति चर एक गैर-स्थैतिक चर है, अर्थात हम इसे स्थैतिक घोषित नहीं कर सकते. इसे इंस्टेंस वेरिएबल कहा जाता है क्योंकि इसका मान इंस्टेंस-विशिष्ट (ऑब्जेक्ट्स से संबंधित) है और इसे अन्य इंस्टेंस/ऑब्जेक्ट्स के साथ साझा नहीं किया जाता है क्योंकि क्लास के प्रत्येक ऑब्जेक्ट में इन गैर-स्थिर चर के लिए मूल्यों का अपना सेट होता है. जैसा कि हम एक वर्ग में एक आवृत्ति चर घोषित करते हैं, ये चर तब बनाए जाते हैं जब कक्षा का कोई ऑब्जेक्ट "नए" कीवर्ड के उपयोग से बनाया जाता है और जब ऑब्जेक्ट नष्ट हो जाता है तो नष्ट हो जाता है. हम केवल ऑब्जेक्ट बनाकर इंस्टेंस वेरिएबल तक पहुंच सकते हैं. साथ ही, हम इन वेरिएबल्स का उपयोग उसी क्लास के अंदर "इस" पॉइंटर का उपयोग करके कर सकते हैं. हम एक्सेस स्पेसिफायर (निजी, सार्वजनिक या डिफ़ॉल्ट) के साथ इंस्टेंस वैरिएबल भी घोषित कर सकते हैं. यदि हम इंस्टेंस वेरिएबल्स के लिए स्पष्ट रूप से कोई एक्सेस स्पेसिफायर सेट नहीं करते हैं तो जावा उन्हें डिफॉल्ट एक्सेस स्पेसिफायर के रूप में मान लेता है. इंस्टेंस वेरिएबल को इनिशियलाइज़ करना आवश्यक नहीं है. यदि हम इसे किसी मान के साथ प्रारंभ नहीं करते हैं, तो यह एक डिफ़ॉल्ट मान प्राप्त करता है. हम इस लेख में पहले ही चर के प्रारंभिक भाग में आवृत्ति चर के डिफ़ॉल्ट मानों की सूची पर चर्चा कर चुके हैं. हीप आवंटन का उपयोग आवृत्ति चर को संग्रहीत करने के लिए किया जाता है और प्रत्येक आवृत्ति चर मान के लिए मेमोरी का एक स्लॉट बनाया जाता है. प्रत्येक वस्तु की आवृत्ति चर की अपनी प्रति होती है, अर्थात इन चरों को वस्तुओं के बीच साझा नहीं किया जा सकता है. इंस्टेंस वेरिएबल क्लास में सभी मेथड्स, कंस्ट्रक्टर्स और ब्लॉक्स को दिखाई देता है. आम तौर पर, यह अनुशंसा की जाती है कि हमें "निजी" एक्सेस विनिर्देशक के साथ उदाहरण घोषित करना चाहिए.
public class InstanceVarExample { String myInstanceVar="instance variable"; public static void main(String args[]){ InstanceVarExample obj = new InstanceVarExample(); InstanceVarExample obj2 = new InstanceVarExample(); InstanceVarExample obj3 = new InstanceVarExample(); System.out.println(obj.myInstanceVar); System.out.println(obj2.myInstanceVar); System.out.println(obj3.myInstanceVar); obj2.myInstanceVar = "Changed Text"; System.out.println(obj.myInstanceVar); System.out.println(obj2.myInstanceVar); System.out.println(obj3.myInstanceVar); } }
instance variable instance variable instance variable instance variable Changed Text instance variable
इन चरों को कक्षा की विधि के अंदर घोषित किया जाता है. उनका दायरा उस विधि तक सीमित है जिसका अर्थ है कि आप उनके मूल्यों को नहीं बदल सकते हैं और उन्हें विधि के बाहर एक्सेस नहीं कर सकते हैं. इस उदाहरण में, मैंने स्थानीय चर के समान नाम के साथ आवृत्ति चर घोषित किया है, यह स्थानीय चर के दायरे को प्रदर्शित करने के लिए है.
जावा में एक स्थानीय चर एक चर है जिसे हम एक विधि, ब्लॉक या एक निर्माता के शरीर के अंदर घोषित करते हैं. हम स्थानीय चर का उपयोग केवल उस पद्धति के भीतर कर सकते हैं और वर्ग के अन्य तरीके इस चर के अस्तित्व से अनजान हैं. एक ब्लॉक ओपनिंग कर्ली ब्रेस से शुरू होता है और क्लोजिंग कर्ली ब्रेस के साथ खत्म होता है. स्थानीय चर का दायरा एक विशेष ब्लॉक तक ही सीमित है. इसका जीवनकाल उस कोष्ठक के भीतर है जिसमें इसे घोषित किया गया है. यही है, यह तब बनाया जाता है जब किसी फ़ंक्शन को कॉल किया जाता है या एक ब्लॉक दर्ज किया जाता है और उस विधि, ब्लॉक या कंस्ट्रक्टर से बाहर निकलने के बाद नष्ट हो जाता है. हम स्थानीय चर को स्थिर के रूप में परिभाषित नहीं कर सकते हैं". हम स्थानीय चर से पहले "अंतिम" कीवर्ड का उपयोग कर सकते हैं. इन चरों का दायरा और पहुंच केवल उस ब्लॉक के अंदर मौजूद है जिसमें हम उन्हें घोषित करते हैं. हम स्थानीय चर के लिए एक्सेस संशोधक का उपयोग नहीं कर सकते. आंतरिक रूप से, स्थानीय चर को लागू करने के लिए एक स्टैक कार्यान्वयन का उपयोग किया जाता है. स्थानीय चर का प्रारंभ आवश्यक है - स्थानीय चर के लिए कोई डिफ़ॉल्ट मान नहीं है, इसलिए हमें स्थानीय चर घोषित करना चाहिए और इसके पहले उपयोग से पहले इसे प्रारंभिक मान के साथ असाइन करना चाहिए. यदि हम स्थानीय चर के मान को प्रारंभ नहीं करते हैं, तो हमें एक संकलन समय त्रुटि मिलेगी.
public class VariableExample { // instance variable public String myVar="instance variable"; public void myMethod(){ // local variable String myVar = "Inside Method"; System.out.println(myVar); } public static void main(String args[]){ // Creating object VariableExample obj = new VariableExample(); /* We are calling the method, that changes the * value of myVar. We are displaying myVar again after * the method call, to demonstrate that the local * variable scope is limited to the method itself. */ System.out.println("Calling Method"); obj.myMethod(); System.out.println(obj.myVar); } }
Calling Method Inside Method instance variable
अगर मैंने आवृत्ति चर घोषित नहीं किया था और केवल स्थानीय चर को विधि के अंदर घोषित किया था तो कथन System.out.println(obj.myVar); संकलन त्रुटि फेंक दी होगी. जैसा कि आप विधि के बाहर स्थानीय चर को बदल और एक्सेस नहीं कर सकते हैं.