CodeGym /مدونة جافا /Random-AR /متغيرات جافا
John Squirrels
مستوى
San Francisco

متغيرات جافا

نشرت في المجموعة
في هذه المقالة، سنشرح لجميع متعلمي Java ما هي متغيرات Java وكيفية التعامل معها.

ما هو متغير جافا

يمكن اعتبار المتغير في Java كمربع. هذا "الصندوق" له حجم معين: الذاكرة المخصصة له. يعتمد حجم الذاكرة المخصصة على نوع المتغير، لكننا سنتحدث عن هذا لاحقًا. وفي الوقت نفسه، لا يمكن تغيير حجم الصندوق نفسه بعد إنشائه، ولكن يمكن تغيير محتوياته. قد يكون الصندوق فارغا. يمكنك "إدراج" بعض القيمة فيه، ثم استخراج بعض القيمة الأخرى ووضعها. وبالتالي فإن المتغير هو حقل يقوم بتخزين قيم البيانات أثناء تنفيذ برنامج جافا. يحتوي هذا الصندوق على ميزات مهمة:
  • يمكن أن تحتوي دائمًا على قيمة واحدة فقط (أو يمكن أن تكون فارغة، وفي هذه الحالة ستحتوي على القيمة الافتراضية)،
  • لديها نوع البيانات. ويعتمد حجمها على نوع البيانات، وكذلك على منطقة معينة من الذاكرة تم تخصيص المكان لها (مكان وجودها).
المتغيرات في جافا - 1

كيفية الإعلان عن المتغيرات

للإعلان عن المتغيرات في Java، يجب عليك تحديد نوعها واسمها. فيما يلي مثال للإعلان عن ثلاثة متغيرات:
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 بت لكل رقم int)، وأعطناه اسمًا، ثم وضعنا القيمة 5 في الذاكرة المخصصة. ثم أعلنا أننا نخصص مساحة ذاكرة للسلسلة النصية ، وقد قام أمر منفصل بالفعل بوضع القيمة "init" فيها. بعد ذلك، قمنا بطباعة السلسلة وقمنا بتغيير قيمة المتغير s . قمنا في هذا البرنامج بطباعة السطور، وإذا قمت بتشغيله ستظهر لك النتيجة التالية:
الحرف الأول init5

أنواع بيانات المتغيرات في Java: بدائية وغير بدائية

تنقسم أنواع بيانات المتغيرات في Java إلى مجموعتين:
  • تتضمن أنواع البيانات البدائية بايت ، وقصير ، وint ، وطويل ، وfloat ، ومزدوج ، و boolean ، و char
  • أنواع البيانات غير الأولية مثل 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 ؟ هذا كائن من فئة Student التي أنشأها المستخدم . تم إنشاؤه ببساطة لتوضيح العمل بمتغيرات غير بدائية. هم الأغلبية في Java، لأن كل شيء تقريبًا في لغة البرمجة هذه عبارة عن كائن. للفهم، إليك رمز فئة الطالب :
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));
   }
}

أنواع المتغيرات في Java: المحلية، والمثيلة، والثابتة

هناك ثلاثة أنواع مختلفة من المتغيرات في لغة جافا، وقد قمنا بإدراجها على النحو التالي:
  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());
   }
}

المتغيرات الساكنة

المتغير الذي يتم تعريفه على أنه ثابت يسمى متغير ثابت. تقدم لك Java الإعلان عن مثل هذه المتغيرات خارج الطريقة أو المنشئ أو الكتلة. لا يمكن أن تكون محلية، فهي تنتمي إلى الطبقة، وليس إلى الحالات. وهذا يعني أنه تم إنشاء نسخة واحدة من المتغير الثابت ومشاركتها بين جميع مثيلات الفصل. يحدث تخصيص الذاكرة للمتغيرات الثابتة مرة واحدة فقط عند تحميل الفئة في الذاكرة. يمكن أن يكون لديهم أي رؤية، ولكن عادةً ما يتم الإعلان عنهم على أنهم عامون. لديهم أيضًا قيم افتراضية مثل متغيرات الحالة.
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;
}
في المثال أعلاه، قمنا بإنشاء فئة تخزين منفصلة ، ​​ونقلنا متغيرات العدد والمجموع إليها، وأعلنا أنها ثابتة. يمكن الوصول إلى المتغيرات الثابتة العامة من أي طريقة برنامج (وليس فقط من إحدى الطرق). لتعزيز ما تعلمته، نقترح عليك مشاهدة درس فيديو من دورة Java الخاصة بنا
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION