override - How does equals() method work in Java -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 20 उत्तरों

    बराबर < / कोड> पद्धति यह दर्शाती है कि क्या दो वस्तु मान समान हैं या नहीं। मेरा प्रश्न यह है कि यह कैसे दो वस्तुओं की तुलना करता है? यह कैसे बता सकता है कि दो वस्तुओं समान हैं या नहीं? मैं यह जानना चाहता हूं कि यह दो वस्तुओं की तुलना क्या करता है। मैं हैशोड विधि को शामिल नहीं कर रहा हूं।

    डिफ़ॉल्ट कार्यान्वयन, एक वर्ग के java.lang.Object , बस संदर्भों का परीक्षण एक ही वस्तु के हैं:

      150 सार्वजनिक बुलियन बराबर (वस्तु obj) {151 वापसी (यह = = Obj); 152}   

    संदर्भ समानता संचालक को इस तरह वर्णित किया गया है:

    चलने के समय, == का परिणाम सही है यदि ऑपरेंड मूल्य हैं दोनों नल या दोनों एक ही वस्तु या सरणी को देखें; अन्यथा, परिणाम झूठा है।

    यह डिफ़ॉल्ट व्यवहार आमतौर पर अर्थात् संतोषजनक नहीं है। उदाहरण के लिए आप == :

      पूर्णांक एक = नया पूर्णांक (1000) का उपयोग कर बड़े पूर्णांक उदाहरणों की समानता का परीक्षण नहीं कर सकते; पूर्णांक बी = नया पूर्णांक (1000); Println (एक == ख);   

    यही कारण है कि विधि ओवरराइड हो गई है:

      722 पब्लिक बूलियन बराबर (वस्तु obj) {723 अगर (obj instanceof पूर्णांक) {724 वापसी मूल्य == ((पूर्णांक) ओबीजी) .इंटवैल्यू (); 725} 726 वापसी झूठी; 727}   

    जो इसे सक्षम करता है:

      System.out.println (a.equals (b)); // सही प्रिंट करता है   

    डिफ़ॉल्ट व्यवहार को अध्यारोहित क्लासेस को सिमेंटिक समानता के लिए जांचना चाहिए, जो कि पहचानने वाले क्षेत्रों की समानता (आमतौर पर सभी) के आधार पर।

    जैसा आपको लगता है पता करने के लिए, आपको इसके अनुसार हैशोड विधि ओवरराइड करनी चाहिए।

Comments

Popular posts from this blog

excel vba - How to delete Solver(SOLVER.XLAM) code -

github - Teamcity & Git - PR merge builds - anyway to get HEAD commit hash? -

ios - Replace text in UITextView run slowly -