Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Java में == और equals() मेथड में अंतर

Java में दोनों == और equals() मेथड दो वेरिएबल्स या ऑब्जेक्ट्स की समानता चेक करने के लिए उपयोग किए जाते हैं।

महत्वपूर्ण अंतर

क्र.सं. की == equals() मेथड
1 प्रकार == एक ऑपरेटर है। equals() Object क्लास का एक मेथड है।
2 तुलना == रेफरेंस तुलना के लिए उपयोग किया जाता है। यह चेक करता है कि दोनों रेफरेंस एक ही लोकेशन पॉइंट करते हैं या नहीं। equals() मेथड कंटेंट तुलना के लिए उपयोग किया जाता है। यह कंटेंट का मूल्यांकन करके समानता चेक करता है।
3 ऑब्जेक्ट == ऑपरेटर को ओवरराइड नहीं किया जा सकता। equals() मेथड यदि मौजूद न हो तो Object.equals() उपयोग होता है, अन्यथा इसे ओवरराइड किया जा सकता है।

उदाहरण: == vs equals()

JavaTester.java

public class JavaTester { 
    public static void main(String args[]) { 
        String s1 = new String("TUTORIALSPOINT"); 
        String s2 = new String("TUTORIALSPOINT"); 
        
        // रेफरेंस तुलना 
        System.out.println(s1 == s2);  // false - अलग ऑब्जेक्ट्स 
        
        // कंटेंट तुलना 
        System.out.println(s1.equals(s2));  // true - समान कंटेंट 
        
        // इंटीजर-टाइप 
        System.out.println(10 == 10);  // true - प्रिमिटिव वैल्यू 
        
        // चार-टाइप 
        System.out.println('a' == 'a');  // true - प्रिमिटिव वैल्यू 
    } 
}

आउटपुट

false
true
true
true

अतिरिक्त महत्वपूर्ण बिंदु

  • String इंटर्निंग: String s1 = "hello"; String s2 = "hello"; में s1 == s2 true होगा क्योंकि स्ट्रिंग लिटरल पूल में स्टोर होते हैं
  • ऑटोबॉक्सिंग: Integer a = 100; Integer b = 100; में a == b true होगा (-128 से 127 तक कैश्ड)
  • कस्टम क्लास: अपनी क्लास में equals() और hashCode() ओवरराइड करें ताकि कंटेंट बेस्ड तुलना काम करे

कस्टम क्लास उदाहरण

public class Person { 
    private String name; 
    private int age; 
    
    // कंस्ट्रक्टर, गेटर, सेटर... 
    
    @Override 
    public boolean equals(Object o) { 
        if (this == o) return true; 
        if (o == null || getClass() != o.getClass()) return false; 
        Person person = (Person) o; 
        return age == person.age && Objects.equals(name, person.name); 
    } 
    
    @Override 
    public int hashCode() { 
        return Objects.hash(name, age); 
    } 
}
  1. - जावा में wait() और sleep() मेथड में अंतर?

    sleep() मेथड Thread क्लास का एक स्टैटिक मेथड है और यह वर्तमान रनिंग थ्रेड को नॉन-रनेबल स्थिति में भेज सकता है जबकि wait() मेथड एक इंस्टेंस मेथड है, हम इसे थ्रेड ऑब्जेक्ट का उपयोग करके बुलाते हैं और यह केवल उस ऑब्जेक्ट के लिए प्रभावी होता है। sleep() मेथड समय समाप्त होने या interrupt() मेथड बुलाए जा

  1. Java में paint() विधि और repaint() विधि के बीच क्या अंतर हैं? Java में paint() विधि और repaint() विधि के बीच क्या अंतर हैं?

    Paint() और Repaint() paint(): इस विधि में इस घटक को पेंट करने के निर्देश होते हैं। Java Swing में, हम paint() विधि के बजाय paintComponent() विधि को बदल सकते हैं क्योंकि paint paintBorder(), paintComponent() और paintChildren() विधियों को कॉल करता है। हम इस विधि को सीधे नहीं बुला सकते, इसके बजाय हम

  1. - Java में printStackTrace() और getMessage() मेथड में क्या अंतर है?

    Java में किसी अपवाद (Exception) की डिटेल्स जानने के दो मुख्य तरीके हैं: printStackTrace() मेथड और getMessage() मेथड। दोनों का उपयोग अलग-अलग परिस्थितियों में किया जाता है। printStackTrace() मेथड यह मेथड java.lang.Throwable क्लास में परिभाषित है और java.lang.Error तथा java.lang.Exception क्लास में