मैं जावा में ऑब्जेक्ट समानता के आसपास कुछ कोड कोशिश कर रहा हूं। जैसा कि मैंने कहीं पढ़ा हैक्यों हैशकोड() लगातार सभी निष्पादन में ऑब्जेक्ट के लिए समान मान देता है?
hashCode()
हैश फ़ंक्शन को लागू करके उत्पन्न किया गया एक नंबर है। प्रत्येक ऑब्जेक्ट के लिए हैश फ़ंक्शन अलग-अलग हो सकता है लेकिन यह भी वही हो सकता है। ऑब्जेक्ट स्तर पर, यह ऑब्जेक्ट का मेमोरी पता देता है।
अब, मेरे पास नमूना प्रोग्राम है, जो मैं लगातार 10 बार चलाता हूं। हर बार जब मैं प्रोग्राम चलाता हूं तो मुझे हैश कोड के समान मूल्य मिलता है।
यदि hashCode()
फ़ंक्शन ऑब्जेक्ट के लिए स्मृति स्थान देता है, तो जावा (JVM) ऑब्जेक्ट को लगातार रन में उसी स्मृति पते पर कैसे संग्रहीत करता है?
क्या आप कृपया मुझे इस मुद्दे पर कुछ अंतर्दृष्टि और अपना विचार दे सकते हैं?
कार्यक्रम मैं इस व्यवहार को परीक्षण करने के लिए चला रहा हूँ नीचे है:
public class EqualityIndex {
private int index;
public EqualityIndex(int initialIndex) {
this.index = initialIndex;
}
public static void main(String[] args) {
EqualityIndex ei = new EqualityIndex(2);
System.out.println(ei.hashCode());
}
}
हर बार जब मैं इस कार्यक्रम हैश कोड दिए गए मान 4072869
है चलाते हैं।
आपकी ऑब्जेक्ट्स क्या हैं? कुछ कोड दिखाएं – Bozho
क्या आप वाकई अपना मान स्मृति पता है? क्या आप इसे पोस्ट कर सकते हैं? – vodkhang
जावा का डिफ़ॉल्ट '.शैशकोड() 'वास्तव में * एड्रेस * की तुलना में एक वृद्धिशील स्मृति * पहचानकर्ता * की तरह अधिक है, इसलिए स्वाभाविक रूप से जब पूर्व शर्त समान होती है, तो परिणाम भी होता है। – Esko