Java में equals
String पाठ की तुलना equals से करिए ताकि मेल खाते शब्द true छापें। Yard.java में String a = "red"; और String b = "red"; लिखिए, फिर a.equals(b) छापिए। String c = "blue"; जोड़िए और a.equals(c) छापिए। javac Yard.java से कंपाइल कर java Yard चलाइए। स्क्रीन को पहले true, फिर false दिखाना चाहिए। दूसरी डेमो दो new String("red") ऑब्जेक्ट बनाती है ताकि == false छाप सके जबकि equals अभी भी true छापे। debugging अगले पृष्ठ के लिए छोड़ दें — यह पाठ सामग्री मेल बनाम ऑब्जेक्ट पहचान है।
equals से पाठ मिलाइए
polymorphism पृष्ठ ने अलग horn बॉडी को Machine-टाइप वेरिएबल से चलाया। यह पृष्ठ पाठ की तुलना करता है। Yard.java खोलिए। पब्लिक क्लास नाम Yard रखिए। अगर स्ट्रिंग कहानी दबाएँ तो बचे Machine / Truck / Car डेमो, abstract भरना, पथ डेमो, और कीबोर्ड Scanner हटा दीजिए। प्रोग्राम टाइपिंग का इंतज़ार न करे। इन डेमो के लिए import लाइन की ज़रूरत नहीं।
Yard.main के अंदर तीन स्ट्रिंग बनाइए:
String a = "red";
String b = "red";
String c = "blue";
तुलनाएँ छापिए:
System.out.println(a.equals(b));
System.out.println(a.equals(c));
विधि equals अक्षरों को देखती है। समान पाठ true लौटाता है। अलग पाठ false लौटाता है।
public class Yard {
public static void main(String[] args) {
String a = "red";
String b = "red";
String c = "blue";
System.out.println(a.equals(b));
System.out.println(a.equals(c));
}
}
उस फ़ोल्डर से जहाँ Yard.java है javac Yard.java चलाइए। जब कोष्ठक, ब्रेसिज़ और सेमीकोलन मेल खाएँ, javac अपनी कोई पंक्ति नहीं लिखता। फिर java Yard चलाइए — java Yard.java नहीं। रन कमांड से .java अंत हटा दीजिए। फ़ाइल में एक पब्लिक क्लास रखिए ताकि नाम Yard से मेल खाए।
स्क्रीन पहले true, फिर false दिखाती है। एक बार रन घुमाइए। Java Yard.main से शुरू होता है। a.equals(b) red की red से तुलना कर true छापता है। a.equals(c) red की blue से तुलना कर false छापता है। आपने a पर विधि बुलाई और दूसरी स्ट्रिंग आर्ग्युमेंट दी।
अगर अभी भी polymorphism फ़ाइल से tone / honk / beep दिखे, equals शिक्षण फ़ाइल पर जाइए और फिर java Yard चलाइए। अगर equals परिणामों के बजाय स्वयं स्ट्रिंग छापें तो स्क्रीन पर red और blue दिखेंगे — boolean दिखाने के लिए a.equals(b) को println में लपेटिए।
स्क्रीन देखते हुए नियम ज़ोर से कहिए: equals पूछता है कि पाठ अक्षर-दर-अक्षर मेल खाता है या नहीं। इस पृष्ठ पर debugger विंडो मत बनाइए। debugging अगले पाठ की प्रतीक्षा करता है।
new String पर == को equals से भिड़ाइए
दूसरा प्रोग्राम new से दो अलग String ऑब्जेक्ट बनाता है। दोनों पाठ red रखते हैं। प्रोग्राम पहले a == b छापता है, फिर a.equals(b)।
public class Yard {
public static void main(String[] args) {
String a = new String("red");
String b = new String("red");
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
javac Yard.java से कंपाइल करिए, फिर java Yard चलाइए। स्क्रीन पहले false, फिर true दिखाती है। == जाँच पूछती है कि a और b मेमोरी में ठीक वही ऑब्जेक्ट हैं या नहीं। दो new String("red") कॉल दो ऑब्जेक्ट बनाते हैं, इसलिए == false छापता है। equals जाँच अभी भी अक्षरों को देखती है, इसलिए true छापती है।
main की दोनों पंक्तियाँ एक बार और पढ़िए। पहली पंक्ति: == से पहचान। दूसरी पंक्ति: equals से सामग्री। इस शिक्षण आकार के लिए दोनों प्रिंट रखिए ताकि विरोध एक स्क्रीन पर रहे। अगर केवल == छापें तो सामग्री मेल छूट जाता है जो यह पृष्ठ भी सिखाता है।
बिना new वाले शुरुआती लिटरल जैसे "red" पर Java कभी-कभी वही pooled ऑब्जेक्ट दोबारा इस्तेमाल कर सकता है, इसलिए == कभी-कभी संयोग से true लग सकता है। यह दूसरी डेमो जानबूझकर new String("red") इस्तेमाल करती है ताकि पहचान जाँच साफ़ false रहे जबकि सामग्री true रहे। जब पाठ मायने रखे तो equals चुनिए।
अगर polymorphism डेमो अभी पास हों, उन्हें इतिहास की तरह रखिए। इस पाठ के लिए equals शिक्षण फ़ाइल चलाइए ताकि स्क्रीन boolean दिखाए, horn शब्द नहीं। अगर javac डुप्लिकेट पब्लिक क्लास की शिकायत करे, केवल Yard को public रखिए।
polymorphism कॉल से तुलना
polymorphism पृष्ठ पर एक विधि नाम ने पैरेंट-टाइप वेरिएबल से अलग बॉडी चलाई। इस पृष्ठ पर एक विधि नाम — equals — जवाब देता है कि दो स्ट्रिंग एक ही पाठ रखती हैं या नहीं, और == जवाब देता है कि वे एक ही ऑब्जेक्ट हैं या नहीं। आप अभी भी Yard.java कंपाइल करते हैं और java Yard चलाते हैं। नए टोकन हैं equals, boolean प्रिंट true / false, और new String के साथ == विरोध।
अगर बची Machine t = new Truck() फ़ाइल अभी खुली है, आप horn कॉल देखेंगे। equals फ़ाइल पर जाइए ताकि main स्ट्रिंग बनाए और तुलना परिणाम छापे। debugging टूल डेमो इस पृष्ठ से बाहर रखिए। कीबोर्ड इनपुट इस पृष्ठ से बाहर रखिए।
यह पृष्ठ debugging के लिए क्या छोड़ता है
यह पृष्ठ स्ट्रिंग सामग्री की तुलना करता है और दिखाता है कि पाठ के लिए == गलत डिफ़ॉल्ट क्यों है। अगला पृष्ठ debugging दिखाता है, जहाँ स्क्रीन और स्रोत की सावधानी से पढ़कर पता चलता है प्रोग्राम गलत क्यों चलता है। यहाँ equals और == पर रहिए। अभी पूरा debugger walkthrough ज़रूरी न बनाइए।
जब बाद में गलत शाखा debug करें, असफल equals जाँच आम कारण है। इस पृष्ठ को उस पड़ोसी कहानी का तुलना आधा मानिए। दोनों Yard डेमो तब तक पूरा करिए जब तक true / false और false / true अपने-आप लगें, फिर debugging पाठ खोलिए।
debugging से पहले
मेल खाते red पाठ पर a.equals(b) बुलाकर true देख सकते हैं, फिर blue के लिए false। दो new String("red") ऑब्जेक्ट बनाकर देख सकते हैं कि == false छापता है जबकि equals true छापता है। हर रखी डेमो के लिए बारी-बारी Yard.java कंपाइल कर java Yard चलाइए। सामग्री मेल और ऑब्जेक्ट पहचान अलग रहे। अगला पृष्ठ debugging है, जहाँ स्क्रीन और स्रोत साथ रखकर गलतियाँ खोजते हैं।
स्पष्ट सामग्री जाँच के लिए तीन-स्ट्रिंग equals डेमो रखिए। स्पष्ट == विरोध के लिए new String डेमो रखिए। debugging फ़ाइलें इस पृष्ठ से बाहर रखिए। ये तीन आदतें आगे बढ़ने से पहले चौकी हैं। जब मेल खाते पाठ के लिए equals true छापे — और जब उस पाठ वाले दो नए ऑब्जेक्ट के लिए == false छापे — यह पाठ अपना काम कर चुका और आप debugging वाले अगले विषय के लिए तैयार हैं।
फ़ोल्डर पर एक आखिरी चक्कर: एक पब्लिक Yard, main में स्ट्रिंग तुलनाएँ, कोई कीबोर्ड इंतज़ार नहीं, कोई ज़बरदस्ती debugger नहीं। खुली डेमो पर एक बार और javac Yard.java और java Yard चलाइए। अगर स्क्रीन अभी भी अपेक्षित boolean छापती है, तुलना कहानी मज़बूत है और कोर्स अगले पृष्ठ पर debugging पर जा सकता है।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी