दिलचस्प पोस्ट
JTable कैसे तैयार करें एडिटर काम करता है एंड्रॉइड मेनू का पृष्ठभूमि का रंग बदलें मैं पूरी तरह से टीएफएस बाइंडिंग कैसे निकाल सकता हूं? एक नंबर फॉर्मेट अपवाद क्या है और मैं इसे कैसे ठीक कर सकता हूं? UITextField की अधिकतम वर्ण लंबाई निर्धारित करें मेरे प्रोजेक्ट में कोई जेनरेट नहीं हुई आर.जेवा फाइल @ पूर्व के बीच का अंतर, @ बियरक्लास, @ बियर ईआच और @पूर्वअल्ल जावा में JSON ऑब्जेक्ट में हैशप को कैसे परिवर्तित करें windowSoftInputMode = "समायोजित करें रीसाइज़ करें" पारभासी कार्य / नेविबार के साथ काम नहीं कर रहा है एंड्रॉइड डायलॉगफ्रैगमेंट बनाम डायलॉग एसडीएल मुख्य मैक्रो क्यों परिभाषित करता है? संदर्भित शैली विशेषताओं को ओवरराइड करना अधिक से अधिक 2 दशमलव स्थानों पर गोल करें (यदि आवश्यक हो तो) स्थैतिक चर initialisation आदेश मेरे स्ट्रिंग के कुछ हिस्सों को कैसे बदलें?

".equals" और "==" के बीच अंतर क्या है?

मैंने आज व्याख्याताओं को बदल दिया और उन्होंने मुझसे अजीब कोड का उपयोग करते हुए कहा। (उन्होंने कहा कि यह प्रयोग करने में बेहतर है। .equals और जब मैंने पूछा, तो उन्होंने जवाब दिया "क्योंकि यह है!")

तो यहां एक उदाहरण है:

 if (o1.equals(o2)) { System.out.println("Both integer objects are the same"); } 

इसके बजाय मुझे क्या करना चाहिए:

 if (o1 == o2) { System.out.println("Both integer objects are the same"); } 

दोनों के बीच अंतर क्या है और क्यों उसका तरीका ( .equals ) का उपयोग बेहतर है?

यह एक त्वरित खोज पर मिला लेकिन मैं वास्तव में उस उत्तर का अर्थ नहीं समझ सकता:

वेब के समाधान से एकत्रित समाधान "".equals" और "==" के बीच अंतर क्या है?"

जावा में, == हमेशा दो संदर्भों की तुलना करता है (गैर प्राइमेटिव्स के लिए, जो कि है) – यानी यह जांचता है कि दो ऑपरेंड समान ऑब्जेक्ट को देखें।

हालांकि, equals विधि ओवरराइड किया जा सकता है – इसलिए दो अलग-अलग ऑब्जेक्ट अभी भी बराबर हो सकते हैं।

उदाहरण के लिए:

 String x = "hello"; String y = new String(new char[] { 'h', 'e', 'l', 'l', 'o' }); System.out.println(x == y); // false System.out.println(x.equals(y)); // true 

इसके अतिरिक्त, यह जानना जरूरी है कि किसी भी दो समान स्ट्रिंग स्थिरांक (मुख्य रूप से स्ट्रिंग लीटरल्स, लेकिन संयोजन के माध्यम से स्ट्रिंग स्थिरांक के संयोजन) उसी स्ट्रिंग का संदर्भ लेंगे। उदाहरण के लिए:

 String x = "hello"; String y = "he" + "llo"; System.out.println(x == y); // true! 

यहां x और y एक ही स्ट्रिंग के संदर्भ हैं, क्योंकि y "hello" बराबर एक कंपाइल-टाइम स्थिरांक है।

== ऑपरेटर की तुलना अगर वस्तुओं समान उदाहरण हैं । बराबर () ओरेनेट वस्तुओं की स्थिति की तुलना करता है (जैसे सभी गुण समान हैं)। आप किसी वस्तु के दूसरे के बराबर होने पर खुद को परिभाषित करने के लिए बराबर () विधि को ओवरराइड कर सकते हैं।

यदि आप और मैं प्रत्येक बैंक में चलते हैं, तो प्रत्येक एक नया खाता खोलेंगे, और प्रत्येक जमा $ 100 होगा, फिर …

  1. myAccount.equals(yourAccount) true क्योंकि उनके पास एक ही मूल्य है , लेकिन
  2. myAccount == yourAccount false क्योंकि वे एक ही खाते नहीं हैं।

(निश्चित रूप से Account वर्ग की उचित परिभाषा, 😉

== एक ऑपरेटर है बराबर वस्तु वर्ग में परिभाषित विधि है

== जांच करता है कि अगर दो ऑब्जेक्ट्स को मेमोरी में एक ही पता होता है और आदिम के लिए यह जांचता है कि क्या उनके पास एक ही वैल्यू है। दूसरी ओर चेक की तुलना में जो दो ऑब्जेक्ट्स की तुलना की जा रही है, उनका बराबर मूल्य है (कैसे के पाठ्यक्रम के आधार पर वस्तु के लिए विधि के बराबर लागू किया गया है। समानताएं प्राथमिकता पर लागू नहीं की जा सकतीं (जिसका अर्थ है कि अगर कोई एक आदिम a.equals (someobject) की अनुमति नहीं है, लेकिन someobject.equals (a) को अनुमति है)।

== ऑपरेटर की जांच करने के लिए दो ऑब्जेक्ट संदर्भों की तुलना होती है कि क्या वे उसी उदाहरण का उल्लेख करते हैं। यह भी, सफल मैच पर सही लौटाएगा। उदाहरण के लिए

 public class Example{ public static void main(String[] args){ String s1 = "Java"; String s2 = "Java"; String s3 = new string ("Java"); test(Sl == s2) //true test(s1 == s3) //false }} 

उदाहरण के ऊपर == एक संदर्भ तुलना है, अर्थात् दोनों वस्तुओं एक ही स्मृति स्थान को इंगित करते हैं

स्ट्रिंग बराबर () ऑब्जेक्ट्स में मूल्यों की तुलना करने के लिए मूल्यांकन करता है

  public class EqualsExample1{ public static void main(String args[]){ String s = "Hell"; String s1 =new string( "Hello"); String s2 =new string( "Hello"); s1.equals(s2); //true s.equals(s1) ; //false }} 

ऊपर उदाहरण यह स्ट्रिंग की सामग्री की तुलना करता है। स्ट्रिंग मैच होने पर यह सही हो जाएगा, और फिर झंडे लौटाएगा।

जावा में, जब "==" ऑपरेटर को 2 ऑब्जेक्ट्स की तुलना करने के लिए उपयोग किया जाता है, यह यह देखने के लिए जांचता है कि क्या ऑब्जेक्ट स्मृति में एक ही स्थान का उल्लेख करते हैं। पूर्व:

 String obj1 = new String("xyz"); String obj2 = new String("xyz"); if(obj1 == obj2) System.out.println("obj1==obj2 is TRUE"); else System.out.println("obj1==obj2 is FALSE"); 

हालांकि तारों में एक ही सटीक वर्ण ("xyz") होता है, ऊपर कोड वास्तव में आउटपुट होगा: obj1 == obj2 FALSE है

जावा स्ट्रिंग वर्ग वास्तव में ऑब्जेक्ट क्लास में डिफ़ॉल्ट बराबर () कार्यान्वयन को ओवरराइड करता है – और यह विधि को ओवरराइड करता है ताकि यह केवल तारों के मूल्यों की जांच करे, न कि उनके स्थान मे स्मृति में। इसका मतलब यह है कि यदि आप 2 स्ट्रिंग ऑब्जेक्ट्स की तुलना करने के लिए बराबर () विधि कहते हैं, तब तक जब अक्षरों का वास्तविक क्रम बराबर है, दोनों ऑब्जेक्ट बराबर माना जाता है

 String obj1 = new String("xyz"); String obj2 = new String("xyz"); if(obj1.equals(obj2)) System.out.printlln("obj1==obj2 is TRUE"); else System.out.println("obj1==obj2 is FALSE"); 

यह कोड निम्नलिखित का उत्पादन करेगा:

obj1 == obj2 TRUE है

 public static void main(String[] args){ String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1.equals(s2)); //// System.out.println(s1 == s2); System.out.println("-----------------------------"); String s3 = "hello"; String s4 = "hello"; System.out.println(s3.equals(s4)); //// System.out.println(s3 == s4); } 

इस कोड में आप '==' और '.equals' दोनों को परिमार्जन कर सकते हैं।

यहाँ। संदर्भ संदर्भ वस्तुओं की तुलना करने के लिए बराबर प्रयोग किया जाता है और '==' वस्तुओं की स्थिति की तुलना करने के लिए प्रयोग किया जाता है ..

(1) == दोनों प्राथमिकताओं और वस्तु प्रकारों के लिए लागू किया जा सकता है, लेकिन बराबर () विधि केवल ऑब्जेक्ट प्रकारों के लिए लागू की जा सकती है।

(2) == सामग्री की तुलना के लिए ओवरराइड नहीं किया जा सकता है, लेकिन बराबर है सामग्री की तुलना के लिए विधि को ओवरराइड किया जा सकता है (उदा। स्ट्रिंग क्लास, आवरण वर्ग, संग्रह वर्ग)।

(3) == विषम प्रकारों के लिए आवेदन करने का प्रयास करते समय अतुलनीय प्रकार की त्रुटि देता है, जहां के बराबर विधि झूठी देता है।

equals( ) विधि और == ऑपरेटर दो अलग-अलग ऑपरेशन करते हैं। equals( ) पद्धति String ऑब्जेक्ट के अंदर के अक्षर की तुलना करती है। == ऑपरेटर की तुलना में दो ऑब्जेक्ट संदर्भों की तुलना में यह देखने के लिए कि क्या वे एक ही उदाहरण का उल्लेख करते हैं। निम्न प्रोग्राम से पता चलता है कि दो अलग स्ट्रिंग ऑब्जेक्ट्स में एक ही अक्षर शामिल हो सकते हैं, लेकिन इन ऑब्जेक्ट्स के संदर्भ समान के बराबर नहीं होंगे:

 // equals() vs == class EqualsNotEqualTo { public static void main(String args[]) { String s1 = "Hello"; String s2 = new String(s1); System.out.println(s1 + " equals " + s2 + " -> " + s1.equals(s2)); System.out.println(s1 + " == " + s2 + " -> " + (s1 == s2)); } } 

चर s1 “Hello” द्वारा बनाए गए स्ट्रिंग उदाहरण को संदर्भित करता है एस 2 के द्वारा निर्दिष्ट ऑब्जेक्ट को प्रारंभकर्ता के रूप में s1 के साथ बनाया गया है। इस प्रकार, दो स्ट्रिंग ऑब्जेक्ट की सामग्रियां समान हैं, लेकिन वे अलग ऑब्जेक्ट हैं इसका मतलब यह है कि s1 और s2 एक ही ऑब्जेक्ट का उल्लेख नहीं करते हैं, इसलिए, नहीं == , जैसा कि पूर्ववर्ती उदाहरण के आउटपुट द्वारा दिखाया गया है:

 Hello equals Hello -> true Hello == Hello -> false 

चलिए कहते हैं कि "==" ऑपरेटर रिटर्न देता है यदि दोनों ऑपेंड्स एक ही ऑब्जेक्ट से संबंधित हैं, लेकिन जब यह सत्य वापस आ जाएगा, जैसा कि हम एक एकल ऑब्जेक्ट को एकाधिक मान निर्दिष्ट नहीं कर सकते

 public static void main(String [] args){ String s1 = "Hello"; String s1 = "Hello"; // This is not possible to assign multiple values to single object if(s1 == s1){ // Now this retruns true } } 

अब जब यह व्यावहारिक रूप से बोलता है, यदि ऐसा नहीं होता है तो यह क्यों == कार्यक्षमता की तुलना करता है ….

आपकी समस्या के बारे में यहां एक साधारण व्याख्या है:

== (बराबर) अंकगणितीय अभिव्यक्ति का मूल्यांकन करने के लिए उपयोग किया जाता है

जहाँ तक

बराबर () विधि स्ट्रिंग की तुलना करने के लिए इस्तेमाल किया

इसलिए, स्ट्रिंग संबंधित कार्यों के लिए संख्यात्मक संचालन और बराबर () विधि के लिए == का उपयोग करना बेहतर है। इसलिए, वस्तुओं की तुलना के लिए बराबर () विधि सही विकल्प होगी