जावा - परिवर्तनीय प्रकार

एक चर हमें नामित भंडारण प्रदान करता है जो हमारे कार्यक्रमों में हेरफेर कर सकता है। जावा में प्रत्येक चर का एक विशिष्ट प्रकार है, जो चर की स्मृति के आकार और लेआउट को निर्धारित करता है; मूल्यों की सीमा जो उस मेमोरी में संग्रहीत की जा सकती है; और परिचालनों का सेट जो चर पर लागू किया जा सकता है।

उपयोग किए जाने से पहले आपको सभी चर घोषित करने होंगे। निम्नलिखित एक चर घोषणा का मूल रूप है -

data type variable [ = value][, variable [ = value] ...] ;

यहां डेटा प्रकार जावा के डेटाटिप्स में से एक है और चर का नाम चर है। निर्दिष्ट प्रकार के एक से अधिक चर घोषित करने के लिए, आप अल्पविराम से अलग की गई सूची का उपयोग कर सकते हैं।

चर घोषणा और जावा में आरंभीकरण के मान्य उदाहरण निम्नलिखित हैं -

उदाहरण

int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

यह अध्याय जावा भाषा में उपलब्ध विभिन्न चर प्रकारों की व्याख्या करेगा। जावा में तीन प्रकार के चर हैं -

  • स्थानीय चर
  • आवृत्ति के चर
  • कक्षा / स्थैतिक चर

स्थानीय चर

  • स्थानीय चर तरीकों, कंस्ट्रक्टरों या ब्लॉकों में घोषित किए जाते हैं।

  • स्थानीय चर तब बनाए जाते हैं जब विधि, कंस्ट्रक्टर या ब्लॉक में प्रवेश किया जाता है और विधि, कंस्ट्रक्टर या ब्लॉक से बाहर निकलते ही चर नष्ट हो जाएगा।

  • एक्सेस चर का उपयोग स्थानीय चर के लिए नहीं किया जा सकता है।

  • स्थानीय चर केवल घोषित विधि, कंस्ट्रक्टर या ब्लॉक के भीतर दिखाई देते हैं।

  • स्थानीय चर को आंतरिक रूप से स्टैक स्तर पर लागू किया जाता है।

  • स्थानीय चर के लिए कोई डिफ़ॉल्ट मान नहीं है, इसलिए स्थानीय चर घोषित किए जाने चाहिए और पहले उपयोग से पहले एक प्रारंभिक मूल्य सौंपा जाना चाहिए।

उदाहरण

यहां, उम्र एक स्थानीय चर है। इसे pupAge () विधि के अंदर परिभाषित किया गया है और इसका दायरा केवल इस विधि तक सीमित है।

public class Test {
   public void pupAge() {
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

उत्पादन

Puppy age is: 7

उदाहरण

उदाहरण के बाद इसका उपयोग किए बिना उम्र का उपयोग किया जाता है, इसलिए यह संकलन के समय एक त्रुटि देगा।

public class Test {
   public void pupAge() {
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

इसे संकलित करते समय निम्न त्रुटि उत्पन्न होगी -

उत्पादन

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

आवृत्ति के चर

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

  • जब ढेर में एक ऑब्जेक्ट के लिए एक स्थान आवंटित किया जाता है, तो प्रत्येक उदाहरण चर मान के लिए एक स्लॉट बनाया जाता है।

  • इंस्टेंस चर तब बनाए जाते हैं जब किसी ऑब्जेक्ट को 'नए' के ​​उपयोग के साथ बनाया जाता है और ऑब्जेक्ट के नष्ट होने पर नष्ट हो जाता है।

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

  • उपयोग से पहले या बाद में कक्षा स्तर में इंस्टेंस चर घोषित किए जा सकते हैं।

  • उदाहरण के चर के लिए एक्सेस संशोधक दिए जा सकते हैं।

  • उदाहरण चर वर्ग में सभी तरीकों, निर्माणकर्ताओं और ब्लॉक के लिए दिखाई देते हैं। आम तौर पर, इन चर को निजी (एक्सेस स्तर) बनाने की सिफारिश की जाती है। हालांकि, एक्सेस मॉडिफायर के उपयोग के साथ इन चर के लिए उपवर्गों की दृश्यता दी जा सकती है।

  • इंस्टेंस चर में डिफ़ॉल्ट मान होते हैं। संख्याओं के लिए, डिफ़ॉल्ट मान 0 है, बूलियंस के लिए यह गलत है, और ऑब्जेक्ट संदर्भों के लिए यह शून्य है। मूल्यों को घोषणा के दौरान या निर्माणकर्ता के भीतर सौंपा जा सकता है।

  • इंस्टेंस वेरिएबल को सीधे क्लास के अंदर वेरिएबल नेम पर कॉल करके एक्सेस किया जा सकता है। हालांकि, स्थैतिक तरीकों के भीतर (जब उदाहरण चर को एक्सेसिबिलिटी दी जाती है), उन्हें पूरी तरह से योग्य नाम का उपयोग करके बुलाया जाना चाहिए। ObjectReference.VariableName

उदाहरण

import java.io.*;
public class Employee {

   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor.
   public Employee (String empName) {
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal) {
      salary = empSal;
   }

   // This method prints the employee details.
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

उत्पादन

name  : Ransika
salary :1000.0

कक्षा / स्थैतिक चर

  • क्लास वेरिएबल्स को स्टैटिक वेरिएबल्स के रूप में भी जाना जाता है, जिन्हें क्लास में स्टैटिक कीवर्ड के साथ घोषित किया जाता है, लेकिन एक मेथड, कंस्ट्रक्टर या ब्लॉक के बाहर।

  • प्रति वर्ग चर में से प्रत्येक की केवल एक प्रति होगी, चाहे इससे कितनी भी वस्तुएं बनाई गई हों।

  • स्थैतिक चर को स्थिरांक के रूप में घोषित किए जाने के अलावा शायद ही कभी उपयोग किया जाता है। स्थिरांक वे चर होते हैं जिन्हें सार्वजनिक / निजी, अंतिम और स्थिर के रूप में घोषित किया जाता है। लगातार चर अपने प्रारंभिक मूल्य से कभी नहीं बदलते हैं।

  • स्थैतिक चर स्थिर मेमोरी में संग्रहीत होते हैं। यह घोषित अंतिम के अलावा स्थिर चर का उपयोग करने के लिए दुर्लभ है और सार्वजनिक या निजी स्थिरांक के रूप में उपयोग किया जाता है।

  • जब प्रोग्राम बंद हो जाता है तब प्रोग्राम शुरू होता है और नष्ट हो जाता है तब स्टेटिक वैरिएबल बनाए जाते हैं।

  • दृश्यता उदाहरण के चर के समान है। हालाँकि, अधिकांश स्टैटिक वैरिएबल को सार्वजनिक घोषित किया जाता है क्योंकि उन्हें कक्षा के उपयोगकर्ताओं के लिए उपलब्ध होना चाहिए।

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

  • Static वैरिएबल को ClassName.VariableName नाम के साथ कॉल करके एक्सेस किया जा सकता है ।

  • जब क्लास वैरिएबल को सार्वजनिक स्टेटिक फाइनल घोषित किया जाता है, तब वेरिएबल नेम (स्थिरांक) सभी ऊपरी स्थिति में होते हैं। यदि स्थिर चर सार्वजनिक और अंतिम नहीं हैं, तो नामकरण वाक्यविन्यास उदाहरण और स्थानीय चर के समान है।

उदाहरण

import java.io.*;
public class Employee {

   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

उत्पादन

Development average salary:1000

Note - यदि चर बाहरी वर्ग से एक्सेस किए जाते हैं, तो स्थिरांक को Employee.DEPARTMENT के रूप में एक्सेस किया जाना चाहिए

आगे क्या है?

आपने पहले ही इस अध्याय में एक्सेस मॉडिफायर (सार्वजनिक और निजी) का उपयोग किया है। अगला अध्याय एक्सेस मॉडिफायर और नॉन-एक्सेस मॉडिफायर के बारे में विस्तार से बताएगा।