السلام عليكم ورحمة الله وبركاته
المعروف في الجافا بأنها تقوم بتمرير القيم فقط pass-by-value وليس في مثل بعض اللغات الأخرى pass-by-reference
لكن في المثال التالي:
public class test
{
public static void main(String[] args)
{
int temp = 1;
editPrimitive(temp);
System.out.println(temp); // prints 1
int[] temp_array = {1};
editObject(temp_array);
System.out.println(temp_array[0]); // prints 2
}
public static void editPrimitive(int n)
{
n = 2;
}
public static void editObject(int[] n)
{
n[0] = 2;
}
}عندما قمنا بتمرير primitive لم تتعدل القيمة، وهذا متوقع لأن التمرير تم بالقيمة pass-by-value، ولكن عندما قمنا بتمرير الـ array وهو object تعدلت القيمة!! أليس صحيحاً أن الجافا لا يمرر المرجع pass-by-reference؟
أتمنى أن أجد إجابة مرضية لتساؤلاتي، وشكراً
