java - How "==" operator compare references? mean internal working of "==" operator -
"==" या जावा में समानता ऑपरेटर जावा प्रोग्रामिंग भाषा द्वारा प्रदान की जाने वाली एक द्विआधारी ऑपरेटर है और प्रिमिटिव और ऑब्जेक्ट की तुलना करने के लिए प्रयोग किया जाता है ।
"==" मेमोरी संदर्भ के आधार पर दो वस्तुओं की तुलना करता है,
मेरा प्रश्न है कि कैसे "==" ऑपरेटर जावा में काम करता है वस्तुओं की तुलना ? यहाँ हम केवल चिंतित हैं कि संदर्भ ऑब्जेक्ट को संदर्भित कर रहे हैं या नहीं। हम बराबर ()
विधि के बारे में बात नहीं कर रहे हैं।
अच्छा, यह वास्तव में बहुत सरल है और सी कोड का इस्तेमाल करके सचित्र किया जा सकता है। सी में, एक मूल्य तक पहुंचने के कई तरीके हैं। *
का उपयोग करके सूचक इंगित करता है, & amp;
एक मेमोरी पता इंगित करता है, और मूल्य के उन डिफ़ॉल्ट के नहीं उदाहरण के लिए:
int * myValue; // एक पूर्णांक मान के लिए एक सूचक।
अब, जावा यह आपके से छुपाता है, लेकिन यह इस तथ्य को नहीं बदलता है कि ऐसा ही होता है।
ऑब्जेक्ट ऑब्जेक्ट; // एक वस्तु के लिए एक सूचक
==
ऐसा काम करता है क्योंकि संकलक ऑपरेटरों के वास्तविक मान लेगा; नहीं वे मूल्य भी इंगित करते हैं जब यह दो ऑब्जेक्ट को हल करता है, तो यह मेमोरी एड्रेस के साथ छोड़ा जाता है और यही वह तुलना करता है। यह भ्रम पैदा करता है कि यह जांच रहा है कि क्या वे एक ही वस्तु हैं।
उदाहरण
जब आप टाइप करते हैं ..
int x = 5; Int y = 4; यदि (x == y) {System.out.println ("कुछ करें"); }
==
को देखा जाता है, और x
और y
को उनके के साथ बदल दिया जाता है वास्तविक मान , तो यह हो जाता है ..
यदि (5 == 4)
जो, इसके नमक के किसी भी संकलक का मूल्यांकन कर सकते हैं
यदि (झूठे)
अब वस्तु के साथ एक ही बात करते हैं।
वस्तु ऑब्जेक्ट = नया वस्तु (); वस्तु वस्तु 2 = नया ऑब्जेक्ट ();
अब हमने दो संकेतक दो अलग-अलग ऑब्जेक्ट्स को घोषित किया है वस्तु
का वास्तविक मान एक स्मृति पता है, जैसा कि object2
है, इसलिए जब हम उनकी तुलना करते हैं ..
< कोड> यदि (ऑब्जेक्ट == ऑब्जेक्ट 2)
यह उनकी मेमोरी एड्रेस से बदल जाती है ..
if (92305204950249t00 = 94205924059204t924) // बस यादृच्छिक मेमोरी पतों को इंगित करने वाले मूल्य
और ये तुलना की जाती हैं। वे अलग हैं, इसलिए यह हो जाता है ..
यदि (झूठे)
ठीक उसी तरह से क्योंकि यह int कोड>।
Comments
Post a Comment