تمرير حسب القيمة --- تمرير معلمات نوع البيانات الأساسية
انسخ رمز الكود كما يلي:
الطبقة العامة PassValue {
تبادل الفراغ الثابت (int a، int b) {// طريقة ثابتة لتبادل قيم a و b
درجة الحرارة الدولية؛
درجة الحرارة = أ؛
أ = ب؛
ب = درجة الحرارة؛
}
public static void main(String[] args){
إنت ط = 10؛
كثافة العمليات ي = 100؛
System.out.println("قبل الاتصال: " + "i=" + i + "/t" + "j = " + j);// قبل الاتصال
Exchange(i, j); // نقل القيمة، يمكن للطريقة الرئيسية استدعاء الطرق الثابتة فقط
System.out.println("بعد الاتصال: " + "i=" + i + "/t" + "j = " + j);// بعد الاتصال
}
}
نتائج التشغيل:
انسخ رمز الكود كما يلي:
قبل الاتصال: i = 10 j = 100
بعد النداء: i = 10 j = 100
ملحوظة: عند استدعاء التبادل (i، j)، تقوم المعلمات الفعلية i و j بتمرير قيمها إلى المعلمات الرسمية المقابلة a وb على التوالي لا تؤثر المعلمات a و b على المعلمات الفعلية، ولم تتغير قيم i و j قبل المكالمة وبعدها.
المرور حسب المرجع --- الكائن كمعلمة
انسخ رمز الكود كما يلي:
كتاب الصف {
اسم السلسلة؛
سعر حمض الفوليك الخاص؛
Book(String n, float){ // طريقة البناء
الاسم = ن؛
السعر = ع؛
}
تغيير الفراغ الثابت (Book a_book، String n، float p) {// طريقة ثابتة، الكائن كمعلمة
a_book.name = n;
a_book.price = p;
}
public void Output(){ // طريقة المثيل، معلومات كائن الإخراج
System.out.println("الاسم: " + الاسم + "/t" + "السعر: " + السعر);
}
}
الطبقة العامة PassAddr {
الفراغ الثابت العام الرئيسي (String [] args) {
Book b = new Book("java2"، 32.5f);
System.out.print("قبل الاتصال:/t");
b.output();
b.change(b, "c++", 45.5f); // نقل المرجع، نقل مرجع الكائن ب، تعديل قيمة الكائن ب
System.out.print("بعد المكالمة:/t");
b.output();
}
}
نتائج التشغيل:
انسخ رمز الكود كما يلي:
قبل الاتصال: الاسم: سعر Java2: 32.5
بعد المكالمة: الاسم: c++ السعر: 45.5
ملاحظة: عند استدعاء التغيير (b،"c++"،45.5f)، يتم استخدام الكائن b كمعلمة فعلية، ويتم تمرير المرجع إلى المعلمة الرسمية المقابلة a_book. في الواقع، يشير a_book أيضًا إلى نفس الكائن ، الكائن له اسمان مرجعيان: b وa_book. عند تنفيذ الطريقة Change()، فإن العملية على المعلمة الرسمية a_book هي العملية على المعلمة الفعلية b.