CodeGym /جاوا بلاگ /Random-UR /جاوا متغیرات
John Squirrels
سطح
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 متغیر کا اعلان اور آغاز کیا، فوری طور پر اس کے لیے میموری مختص کی (ہر int نمبر کے لیے 32 بٹس)، اسے ایک نام دیا، اور پھر مختص میموری میں ویلیو 5 رکھ دی۔ پھر ہم نے اعلان کیا کہ ہم سٹرنگ کے لیے میموری کی جگہ مختص کر رہے ہیں s ، اور پہلے سے ہی ایک الگ کمانڈ نے اس میں قدر "init" ڈال دی ہے۔ اس کے بعد، ہم نے سٹرنگ کو پرنٹ کیا اور متغیر کی قدر کو تبدیل کیا s ۔ اس پروگرام میں، ہم نے لائنوں کو پرنٹ کیا، اور اگر آپ اسے چلاتے ہیں، تو آپ کو درج ذیل نتیجہ نظر آئے گا:
init init5

جاوا میں متغیرات کی ڈیٹا کی قسمیں: قدیم اور غیر قدیم

جاوا میں ڈیٹا کی قسم کے متغیرات کو دو گروپوں میں تقسیم کیا گیا ہے:
  • قدیم ڈیٹا کی اقسام میں بائٹ ، شارٹ ، انٹ ، لانگ ، فلوٹ ، ڈبل ، بولین ، اور چار شامل ہیں
  • غیر قدیم ڈیٹا کی اقسام جیسے String ، Arrays ، اور Classes
متغیر کے ساتھ کام کرنے کی ایک مثال یہ ہے:

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) java: متغیر 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