मेरे पास पूर्णांक हैं जो बराबर होने चाहिए (और मैं इसे आउटपुट द्वारा सत्यापित करता हूं)। लेकिन मेरे if
स्थिति में जावा इन चरों को समान मान रखने के लिए नहीं देखता है।जावा क्यों नहीं देखता कि इंटीजर बराबर हैं?
मैं निम्नलिखित कोड है:
if (pay[0]==point[0] && pay[1]==point[1]) {
game.log.fine(">>>>>> the same");
} else {
game.log.fine(">>>>>> different");
}
game.log.fine("Compare:" + pay[0] + "," + pay[1] + " -> " + point[0] + "," + point[1]);
और यह निम्नलिखित उत्पादन का उत्पादन:
Integer[] point = new Integer[2];
:
FINE: >>>>>> different
FINE: Compare:: 60,145 -> 60,145
शायद मैं जोड़ने के लिए है कि point
इस तरह परिभाषित किया गया है है और pay
हमें लूप-कन्स्ट्रक्टर से लिया गया:
for (Integer[] pay : payoffs2exchanges.keySet())
तो, इन दो चर दोनों में पूर्णांक प्रकार है।
यदि आपके पास खुले दिमाग हैं तो आपको मेरी स्पष्टीकरण पसंद हो सकती है ... ऐसा इसलिए है क्योंकि जब वे रैपर वर्ग बनाने का फैसला करते हैं तो जावा निर्माता रॉयली खराब हो जाते हैं, जिनमें वास्तव में दयनीय प्रदर्शन होता है (आपको कोई नहीं मिला है एक * इंटी * * के अंदर * int * लपेटकर उत्पन्न अपशिष्ट के बारे में विचार। उन्होंने इसे मुख्य रूप से किया क्योंकि वे कुछ साफ और कुशल डिजाइन करने में असमर्थ थे, जैसे, * ट्रोव * * * TLongIntHashMap *। निश्चित रूप से उन लोगों से स्नैकी घुटने टेकने की टिप्पणियों की अपेक्षा करें जिन्होंने जावा कूल-एक्ट को पी लिया है, यह बताते हुए कि मैं कैसे गलत हूं और कैसे रैपर वर्ग देवता हैं;) – SyntaxT3rr0r
बीटीडब्ल्यू, कभी भी * नया इंटीजर [2] * कभी नहीं करें क्योंकि आप मजबूर करते हैं एक नई वस्तु का निर्माण। ** आईएफएफ ** आप * इंटेगर * जैसे रैपर वर्गों का उपयोग करते रहें (जो आपको वास्तव में नहीं करना चाहिए लेकिन यह एक और विषय है), आप एक * Integer.valueOf (2) * (बीटीडब्ल्यू जो बाद में ** ** गारंटी देता है ** जावा चश्मा के अनुसार -128 से 127 तक पहली 256 इंटीजर ऑब्जेक्ट्स का पुन: उपयोग करता है लेकिन यह एक बहुत ही ज्ञात जावा मस्तिष्क नहीं है)। – SyntaxT3rr0r
स्पूनबेंडर: जावा निर्माता के निर्णय के बारे में * केवल * स्ट्रिंग के लिए ऑपरेटर ओवरलोडिंग की अनुमति देता है? इस तरह 'Integer.valueOf (127) == Integer.valueOf (127) 'लेकिन' Integer.valueOf (128)! = Integer.valueOf (128) '! – Gabe