CodeGym /Java Blog /अनियमित /जावा चर
John Squirrels
स्तर 41
San Francisco

जावा चर

अनियमित ग्रुप में प्रकाशित
इस लेख में, हम सभी जावा शिक्षार्थियों को समझाने जा रहे हैं कि जावा चर क्या हैं और उनके साथ कैसे काम करें।

जावा चर क्या है

जावा में एक चर को एक बॉक्स के रूप में माना जा सकता है। इस "बॉक्स" का एक निश्चित आकार है: इसके लिए आवंटित मेमोरी। कितनी मेमोरी आवंटित की जाएगी यह चर के प्रकार पर निर्भर करता है, लेकिन हम इस बारे में थोड़ी देर बाद बात करने जा रहे हैं। साथ ही, इसके निर्माण के बाद बॉक्स का आकार स्वयं नहीं बदला जा सकता है, लेकिन सामग्री बदल सकती है। बक्सा खाली हो सकता है। आप इसमें कुछ मूल्य "सम्मिलित" कर सकते हैं, और फिर कुछ अन्य मान निकाल सकते हैं और डाल सकते हैं। इस प्रकार, एक चर एक ऐसा क्षेत्र है जो जावा प्रोग्राम के निष्पादन के दौरान डेटा मान संग्रहीत करता है। इस बॉक्स में महत्वपूर्ण विशेषताएं हैं:
  • इसमें हमेशा केवल एक मान हो सकता है (या खाली हो सकता है, जिस स्थिति में इसमें डिफ़ॉल्ट मान होगा),
  • इसका एक डेटा प्रकार है। इसका आकार डेटा के प्रकार पर निर्भर करता है, साथ ही स्मृति के किस विशेष क्षेत्र पर इसके लिए जगह आवंटित की जाती है (जहां यह स्थित है)।
जावा में चर - 1

चर कैसे घोषित करें

जावा में चर घोषित करने के लिए, आपको इसके प्रकार और नाम को निर्दिष्ट करने की आवश्यकता है। यहाँ तीन चर घोषित करने का एक उदाहरण दिया गया है:

int myInt;
String s;
Object variableName;
यहाँ int , String , और Object डेटा प्रकार हैं और myInt , s , VariableName चर नाम हैं। प्रोग्राम की जरूरतों के आधार पर डेटा प्रकार का चयन किया जाना चाहिए, और नाम चुनना बेहतर है ताकि यह स्पष्ट हो सके कि यह किस बारे में है। बेशक, शुरुआती लोगों के लिए यह उतना सख्त नहीं है, लेकिन बड़ी परियोजनाओं में, चर नाम जैसे 's' कोड की पठनीयता को ख़राब कर सकते हैं। इसलिए यह बेहतर है कि वेरिएबल्स के नामकरण का इस तरह से उपयोग किया जाए जिससे यह स्पष्ट हो जाए कि वे शुरुआत से ही किस लिए हैं। कारण के भीतर, बिल्कुल।

वेरिएबल्स को इनिशियलाइज़ कैसे करें

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

public class VariableTest {
    public static void main(String[] args) {
        int myInt = 5;
        String s;
        s = "init";
        System.out.println(s);
        s = s+5;
        System.out.println(s);
    }
}
यहां हमने myInt वैरिएबल को एक लाइन में डिक्लेयर और इनिशियलाइज़ किया , तुरंत इसके लिए मेमोरी आवंटित की (प्रत्येक इंट नंबर के लिए 32 बिट्स), इसे एक नाम दिया, और फिर आवंटित मेमोरी में वैल्यू 5 रखा। तब हमने घोषणा की कि हम स्ट्रिंग s के लिए मेमोरी स्पेस आवंटित कर रहे थे , और पहले से ही एक अलग कमांड ने इसमें "init" मान डाल दिया। उसके बाद, हमने स्ट्रिंग को प्रिंट किया और वेरिएबल s का मान बदल दिया । इस कार्यक्रम में, हमने पंक्तियों को प्रिंट किया, और यदि आप इसे चलाते हैं, तो आप निम्न परिणाम देखेंगे:
init init5

जावा में डेटा प्रकार के चर: आदिम और गैर-आदिम

जावा में डेटा प्रकार के चर दो समूहों में विभाजित हैं:
  • आदिम डेटा प्रकारों में बाइट , शॉर्ट , इंट , लॉन्ग , फ्लोट , डबल , बूलियन और चार शामिल हैं
  • गैर-आदिम डेटा प्रकार जैसे स्ट्रिंग , एरे और क्लासेस
यहाँ चर के साथ काम करने का एक उदाहरण है:

public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point number
       char myLetter = 'a';         // character
       boolean myBool = true;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);
      
   }
}
int , char , boolean , और float प्रिमिटिव हैं। स्ट्रिंग गैर-आदिम है। MyStudent चर के बारे में क्या ? यह उपयोगकर्ता द्वारा बनाई गई कक्षा छात्र का एक उद्देश्य है । यह केवल गैर-आदिम चरों के साथ कार्य को स्पष्ट करने के लिए बनाया गया था। वे जावा में बहुसंख्यक हैं, क्योंकि इस प्रोग्रामिंग भाषा में लगभग सब कुछ एक वस्तु है। समझने के लिए, यहाँ विद्यार्थी वर्ग का कोड है :

import java.util.Date;

public class Student {
   String surname;
   String name;
   String secondName;
   Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }

   @Override
   public int hashCode(){
       //TODO: check for nulls
       //return surname.hashCode() ^ name.hashCode() ^ secondName.hashCode() ^ (birthday.hashCode());
       return (surname + name + secondName + birthday).hashCode();
   }
   @Override
   public boolean equals(Object other_) {
       Student other = (Student)other_;
       return (surname == null || surname.equals(other.surname) )
               && (name == null || name.equals(other.name))
               && (secondName == null || secondName.equals(other.secondName))
               && (birthday == null || birthday.equals(other.birthday));
   }
}

जावा में चर के प्रकार: स्थानीय, उदाहरण और स्थिर

जावा में तीन अलग-अलग प्रकार के वेरिएबल्स हैं, हमने उन्हें निम्नानुसार सूचीबद्ध किया है:
  1. स्थानीय चर
  2. आवृत्ति के चर
  3. स्थैतिक चर

स्थानीय चर

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

public class VariableTest {
   public static void main(String[] args) {
       System.out.println(myMethod("C plus "));
   }
           private static String myMethod(String myString) {
       String myOtherString = "plus";
       return myString + myOtherString;
   }
}
यहाँ myOtherString एक स्थानीय चर है। आप इसे दूसरी विधि से उपयोग नहीं कर सकते, लेकिन myMethod । स्थानीय चर में डिफ़ॉल्ट मान नहीं हो सकते। यदि प्रोग्राम में कम से कम एक लोकल वेरिएबल को इनिशियलाइज़ नहीं किया गया है, तो प्रोग्राम ठीक से काम नहीं करेगा। आइए पिछले उदाहरणों में से एक में एक छोटा सा बदलाव करते हैं और myBool वैरिएबल को इनिशियलाइज़ करने के लिए "भूल जाते हैं":

public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point 
       char myLetter = 'a';         // character
       boolean myBool;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);

   }
}
यदि हम प्रोग्राम को चलाने का प्रयास करते हैं, तो यह एक एरर देगा:
त्रुटि: (10, 50) जावा: चर myBool को प्रारंभ नहीं किया जा सकता है

आवृत्ति के चर

क्लास के अंदर लेकिन किसी भी मेथड, कंस्ट्रक्टर या ब्लॉक के बॉडी के बाहर घोषित वेरिएबल को इंस्टेंस वेरिएबल कहा जाता है। इंस्टेंस वेरिएबल्स तब बनाए जाते हैं जब नए कीवर्ड का उपयोग करके कोई ऑब्जेक्ट बनाया जाता है। वस्तु के नष्ट होने पर यह नष्ट हो जाता है। इसे स्थैतिक के रूप में घोषित नहीं किया जा सकता है, लेकिन आप उदाहरण चर के लिए एक्सेस संशोधक का उपयोग कर सकते हैं। कक्षा में सभी विधियों, निर्माणकर्ताओं और ब्लॉकों के लिए इंस्टेंस चर दिखाई दे रहे हैं। आमतौर पर आवृत्ति चर निजी होते हैं, लेकिन आप उपवर्गों के लिए दृश्यता बदल सकते हैं। स्थानीय चर के विपरीत इंस्टेंस चर में डिफ़ॉल्ट मान होते हैं। सभी संख्या आदिम प्रकारों के लिए डिफ़ॉल्ट मान 0 है, बूलियन्स के लिए यह झूठा है, और वस्तु संदर्भों के लिए यह शून्य है। मान घोषणा के दौरान या कंस्ट्रक्टर के भीतर असाइन किए जा सकते हैं। यहाँ एक उदाहरण है:

//instance variable example
public class Employee {

   // here we have a public instance variable. It is visible for this class and child classes
   public String name;

   //this instance variable is private so it’s visible for the Employee class only. You can use setters and getters to get it
   private double salary;

   public Employee (String empName) {
       name = empName;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public double getSalary() {
       return salary;
   }

   public void setSalary(double employeeSalary) {
       salary = employeeSalary;
   }

   public static void main(String args[]) {
       Employee employee = new Employee("Johnny");
       employee.setSalary(1500);
       System.out.println("name = " + employee.getName());
       System.out.println("salary = " + employee.getSalary());
   }
}

स्थैतिक चर

एक वेरिएबल जिसे स्टैटिक घोषित किया जाता है, स्टैटिक वेरिएबल कहलाता है। जावा आपको एक विधि, कंस्ट्रक्टर या ब्लॉक के बाहर ऐसे चर घोषित करने की पेशकश करता है। यह स्थानीय नहीं हो सकता, वे वर्ग के हैं, उदाहरण के नहीं। इसका मतलब है कि एक बार स्थिर चर की एक प्रति बनाई गई और कक्षा के सभी उदाहरणों के बीच साझा की गई। स्टैटिक वेरिएबल्स के लिए मेमोरी एलोकेशन केवल एक बार होता है जब क्लास को मेमोरी में लोड किया जाता है। उनकी कोई भी दृश्यता हो सकती है, लेकिन आमतौर पर उन्हें सार्वजनिक घोषित किया जाता है। उनके पास डिफ़ॉल्ट मान भी होते हैं जैसे उदाहरण चर।

public class Box
{
   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;
}
ऊपर दिए गए उदाहरण में, हमने एक अलग स्टोरेज क्लास बनाई, इसमें काउंट और सम वेरिएबल्स को स्थानांतरित किया और उन्हें स्थिर घोषित किया। सार्वजनिक स्थिर चर को किसी भी प्रोग्राम विधि से एक्सेस किया जा सकता है (और न केवल एक विधि से)। आपने जो सीखा है उसे सुदृढ़ करने के लिए, हमारा सुझाव है कि आप हमारे जावा कोर्स से एक वीडियो सबक देखें
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION