संपादित करें: ठीक है, ठीक है, मैं गलत पढ़ता हूं। मैं इंटीजर को एक इंट की तुलना नहीं कर रहा हूं। विधिवत् नोट किया हुआ।== do के साथ इंटीग्रर्स की तुलना में वास्तव में क्या करता है?
मेरे SCJP पुस्तक का कहना है:
जब == एक आवरण के लिए एक आदिम तुलना करने के लिए प्रयोग किया जाता है, आवरण unwrapped हो जाएगा और तुलना आदिम करने के लिए आदिम हो जाएगा।
तो आपको लगता है कि हम इस कोड true
प्रिंट होगा:
Integer i1 = 1; //if this were int it'd be correct and behave as the book says.
Integer i2 = new Integer(1);
System.out.println(i1 == i2);
लेकिन यह false
प्रिंट करता है।
इसके अलावा, मेरी किताब के अनुसार, इस true
प्रिंट चाहिए:
Integer i1 = 1000; //it does print `true` with i1 = 1000, but not i1 = 1, and one of the answers explained why.
Integer i2 = 1000;
System.out.println(i1 != i2);
नहीं। यह false
है।
क्या देता है?
देखें, मुझे यकीन है कि अगर किताब के इस हिस्से खराब लिखा है नहीं कर रहा हूँ या मैं कर रहा हूँ एक मूर्ख, लेकिन मैं यह नहीं कह सकता कि इसका कारण क्या है। समझने का मेरा सबसे अच्छा प्रयास यह है कि == का अलग-अलग व्यवहार किया जाता है! =। शायद == मूल्य समानता (गहरी समानता) को दर्शाता है लेकिन! = नहीं करता है। किसी भी मामले में, किताब जो कहती है वह आईआरएल नहीं होती है। –
नहीं, इस मामले में समस्या दो प्रकारों में निहित है जो आप तुलना कर रहे हैं। == और! = वैसे ही व्यवहार करें। – EboMike
बस यह उदाहरण मुझे यह सोचने के लिए पर्याप्त है कि जावा एक वास्तविक प्रोग्रामिंग भाषा के बजाय किसी प्रकार का बीमार मजाक है। – dsimcha