تحلل هذه المقالة الفرق بين متغيرات الأعضاء والمتغيرات المحلية في Java مع الأمثلة. شاركها مع الجميع لتكون مرجعا لك. التحليل المحدد هو كما يلي:
متغيرات الأعضاء: المتغيرات الخاصة المحددة في هذه الفئة تنتمي إلى هذه الفئة.
قم بإنشاء واستخدام متغيرات الأعضاء لنسخ الكود كما يلي: public class Person {.
اسم السلسلة؛
سلسلة الجنس؛
العمر الصحيح؛
ارتفاع مزدوج؛
الفراغ العام الثابت الرئيسي (سلسلة arges [])
{
الشخص ع=شخص جديد();
p.name="شياو هوانغ";
p.Sex = "ذكر"؛
صفحة العمر=20;
ص. الارتفاع = 1.7؛
System.out.println("الاسم:"+p.name+"،الجنس"+p.Sex+"،العمر:"+p.age+"،العمر:"+p.Height);
}
}
عملية تهيئة متغير العضو
1. تهيئة الفصل
بالنسبة لتهيئة الفئة: تتم تهيئة الفئة بشكل عام مرة واحدة فقط، وتقوم تهيئة الفئة بشكل أساسي بتهيئة متغيرات الأعضاء الثابتة.
يحدد تجميع الفصل عملية تهيئة الفصل.
يقوم ملف الفئة الذي تم إنشاؤه بواسطة المترجم بشكل أساسي بإجراء التغييرات التالية على الفئات المحددة في الملف المصدر:
1) قم أولاً بتعريف متغيرات الأعضاء داخل الفصل بالترتيب الذي يتم به تعريف متغيرات الأعضاء الثابتة.
2) التهيئة وفقًا لتسلسل التهيئة لمتغيرات الأعضاء في فئة جافا الأصلية.
التحويل المقابل بين فئة Java والفئة المترجمة هو كما يلي:
الملف المصدر:
انسخ الكود كما يلي: public class Person{
اسم السلسلة الثابتة العامة = "Zhang San"؛
العمر الثابت العام؛
ثابت {
العمر = 20؛
System.out.println("عمر التهيئة");
}
عنوان السلسلة الثابتة العامة؛
ثابت {
عنوان = "بكين"؛
العمر = 34؛
}
public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}
عندما يتم تحويل كود مصدر Java إلى ملف فئة، يتم تحويله إلى تعليمة برمجية مشابهة لما يلي:
انسخ الكود كما يلي: public class Person{
اسم السلسلة الثابتة العامة؛
العمر الثابت العام؛
عنوان السلسلة الثابتة العامة؛
ثابت {
الاسم = "تشانغ سان"؛
العمر = 20؛
System.out.println("عمر التهيئة");
عنوان = "بكين"؛
العمر = 34؛
}
public static void main(String[] args) {
System.out.println(name);
System.out.println(age);
System.out.println(address);
}
}
يتم تنفيذ تسلسل التهيئة بشكل تسلسلي وفقًا لتسلسل التهيئة لمتغيرات أعضاء الفئة المقابلة بعد التحويل، بحيث يتم الإعلان عن جميع متغيرات الأعضاء الثابتة أولاً ثم يتم تعيينها، ويعتمد ترتيب التعيين أيضًا على الترتيب الذي يتم به متغيرات الأعضاء الثابتة تمت تهيئته في الكود المصدري، ملاحظة: تعريف متغير العضو وتهيئته مباشرة يعادل تهيئته في كتلة تعليمات برمجية ثابتة، وكلاهما بالترتيب الذي تم تعريفهما به في الكود المصدري.
المتغيرات المحلية
المتغير المحلي: تم إنشاؤه في نص الطريقة، ولا يمكن الوصول إلى هذا المتغير خارج نص الطريقة.
إنشاء واستخدام المتغيرات المحلية (يجب تعيين قيمة للمتغيرات المحلية، ولا يجوز تعيين قيمة لمتغيرات الأعضاء)
انسخ الكود كما يلي: public class Person {
الفراغ العام الثابت الرئيسي (سلسلة arges [])
{
اسم السلسلة = "شياو هوانغ"؛
سلسلة الجنس = "ذكر"؛
عمر الباحث = 20؛
ارتفاع مزدوج = 1.70؛
System.out.println("الاسم:"+الاسم+"،الجنس"+الجنس+"،العمر:"+العمر+"،العمر:"+الارتفاع);
}
}
انظر المثال وانسخ الكود كما يلي: public class PassTest {.
public static void main(String args[]) {
StringBuffer a = new StringBuffer("a");
StringBuffer b = new StringBuffer("b");
أ(أ، ب)؛
System.out.println(a);
System.out.println(b);
PassTest p = new PassTest();
جهاز الكمبيوتر();
}
الفراغ الثابت أ(StringBuffer a، StringBuffer b) {
أ = أ. إلحاق (ب)؛
ب = أ؛
}
}
وفقًا لنطاق استخدام المتغيرات المحلية، يجب أن تكون النتيجة ab، ولكن في الواقع يكون الناتج ab b. لماذا؟
إنها مسألة تمرير مراجع المعلمات. إذا كان مرجعًا، فيجب أن يكون ما تم تمريره نسخة من نفس المرجع.
b=a في الطريقة a يغير مرجع النسخة b إلى =a، لكن ليس له أي تأثير على b بشكل رئيسي.
a = a.append(b); بشكل رئيسي a.append(b); تغير هذه الجملة القيمة المشار إليها بواسطة مرجع، لأن a بشكل رئيسي يشير أيضًا إلى نفس الكائن، وبالتالي فإن الإخراج هو ab b
إذا تم تغيير a = a.append(b); إلى a = new StringBuffer("ab");
أنظر إلى البرنامجين التاليين:
الإجراء الأول:
انسخ الكود كما يلي: public class Variable
{
كثافة العمليات أنا؛
اختبار باطل ()
{
كثافة العمليات ي = 8؛
إذا (ي == ط)
System.out.println("متساوي");
آخر
System.out.println("غير متساوي");
}
الفراغ العام الثابت الرئيسي (String[] args)
{
المتغير v=new Variable();
v.test();
}
}
الإجراء الثاني:
انسخ الكود كما يلي: public class Variable
{
اختبار باطل ()
{
كثافة العمليات أنا؛
كثافة العمليات ي = 8؛
إذا (ي == ط)
System.out.println("متساوي");
آخر
System.out.println("غير متساوي");
}
الفراغ العام الثابت الرئيسي (String[] args)
{
المتغير v=new Variable();
v.test();
}
}
البرنامج الأول عادي ويجمع دون أخطاء. عند تجميع البرنامج الثاني، سيظهر الخطأ التالي:
D:Programjavatest>javac Variable.java
Variable.java:9: المتغير i ربما لم تتم تهيئته بعد
إذا (ي == ط)
^
خطأ
سبب حدوث مثل هذا الخطأ هو: أن متغيرات الأعضاء لها قيم افتراضية (يجب تعيين المتغيرات النهائية وغير الثابتة بشكل صريح)، ولن يتم تعيين المتغيرات المحلية تلقائيًا.
ينقسم جسم الفصل إلى قسمين. تسمى المتغيرات المحددة في جزء تعريف المتغير بمتغيرات أعضاء الفئة، وتسمى المتغيرات المحددة في نص الطريقة ومعلمات الطريقة بالمتغيرات المحلية.
الفرق بين المتغيرات المحلية ومتغيرات الأعضاء
تصف المتغيرات المحلية السمات الموجودة في نص الطريقة، بينما تصف متغيرات الأعضاء السمات الموجودة في الكائن.
يمكن تعديل متغيرات الأعضاء بواسطة المعدلات العامة، والمحمية، والافتراضية، والخاصة، والثابتة، والنهائية، بينما لا يمكن تعديل المتغيرات المحلية إلا بواسطة المعدل النهائي.
يتم إنشاء متغيرات الأعضاء على الكومة، ويتم إنشاء المتغيرات المحلية على المكدس.
المتغيرات المحلية لها قيم افتراضية للنظام لا تحتوي المتغيرات المحلية على قيم افتراضية للنظام ويجب تعيينها يدويًا.
آمل أن تكون هذه المقالة مفيدة لبرمجة جافا للجميع.