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()` कब। विशेष रूप से यह जानना चाहता हूँ कि यह स्ट्रिंग्स और अन्य ऑब्जेक्ट्स के साथ कैसे काम करता है। <<>>

मुख्य अंतर: संदर्भ तुलना बनाम सामग्री तुलना

== और equals() के बीच मुख्य अंतर यह है कि == ऑपरेटर दो ऑब्जेक्ट्स के मेमोरी संदर्भों (references) की तुलना करता है, जबकि equals() विधि ऑब्जेक्ट्स की सामग्री (content) की तुलना करती है।

जब आप == का उपयोग करते हैं, तो यह जांचता है कि क्या दोनों वेरिएबल मेमोरी में एक ही ऑब्जेक्ट को इंगित करते हैं। दूसरी ओर, equals() यह जांचता है कि क्या दो ऑब्जेक्ट्स तार्किक रूप से समान हैं, भले ही वे मेमोरी में अलग-अलग स्थानों पर हों।

आपके उदाहरण में, a और b दोनों स्ट्रिंग पूल (String pool) में एक ही ऑब्जेक्ट को संदर्भित करते हैं, इसलिए == true लौटाता है। लेकिन c new कीवर्ड का उपयोग करके बनाया गया है, इसलिए य