Avatar ·

ما الفرق بين == و equals() في Java؟

مرحباً أيها الزملاء! لقد بدأت للتو في تعلم Java وواجهت موقفاً غير مفهوم عند مقارنة السلاسل النصية. كتبت كوداً بسيطاً:\n\n```java\nString a = "Привет";\nString b = "Привет";\nString c = new String("Привет");\n\nSystem.out.println(a == b); // true\nSystem.out.println(a == c); // false\nSystem.out.println(a.equals(c)); // true\n```\n\nلماذا `a == b` ترجع `true`، بينما `a == c` ترجع `false`؟ وما علاقة `equals()` بهذا؟ كنت أعتقد أن كلا العاملين يقارنان القيم. ما السر؟ اشرحوا لي، من فضلكم، كمبتدئ، متى أستخدم `==` ومتى أستخدم `equals()`. يهمني بشكل خاص كيف يعمل هذا مع السلاسل النصية والكائنات الأخرى.\n\n<<>>\n

الفرق الرئيسي: مقارنة المراجع مقابل مقارنة المحتوى

\n\n

الفرق الجوهري بين == و equals() هو أن == يقارن المراجع (references) في الذاكرة، بينما equals() يقارن المحتوى الفعلي للكائنات.