Avatar ·

في Java، هل يتم تمرير المعاملات بالمرجع أم بالقيمة؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Java وواجهت سوء فهم. في الكتب يُكتب أن كل شيء في Java يُمرر بالقيمة، لكنني في الممارسة العملية أرى شيئًا غريبًا. هذا مثال. عندما أمرر كائنًا (مثل قائمة) إلى method وأغيره داخل الـ method، تبقى التغييرات محفوظة حتى بعد الخروج من الـ method: ```java public class Test { public static void main(String[] args) { StringBuilder sb = new StringBuilder("Hello"); changeString(sb); System.out.println(sb); // الإخراج: Hello World } public static void changeString(StringBuilder s) { s.append(" World"); } } ``` هنا تغير sb. اعتقدت أنه إذا تم تمرير نسخة، فيجب أن تكون التغييرات محلية. إذن، هل يتم تمرير الكائنات بالمرجع؟ لكن إذا حاولت تعيين كائن جديد داخل الـ method، فلن ينعكس ذلك خارجيًا: ```java public class Test { public static void main(String[] args) { StringBuilder sb = new StringBuilder("Hello");