यह इस में संकलित किया है:
Integer sum = Integer.valueOf(new Integer(2).intValue()+new Integer(4).intValue());
आप बाइट को देखकर यह सत्यापित कर सकते हैं javap -c
के साथ प्राप्त कोड disassembly।
यहाँ, बात यह है कि नई पूर्णांक (2) .intValue() से मेल खाती है है स्टैक पर पूर्णांक 2 छोड़ने:
0: new #2; //class java/lang/Integer
3: dup
4: iconst_2
5: invokespecial #3; //Method java/lang/Integer."<init>":(I)V
8: invokevirtual #4; //Method java/lang/Integer.intValue:()I
यहाँ बात यह है कि नई पूर्णांक (4) .intValue से मेल खाती है (है), ढेर पर पूर्णांक 4 छोड़ने:
11: new #2; //class java/lang/Integer
14: dup
15: iconst_4
16: invokespecial #3; //Method java/lang/Integer."<init>":(I)V
19: invokevirtual #4; //Method java/lang/Integer.intValue:()I
और यहाँ योग 2 + 4 iadd
साथ गणना की जाती है, योग एक पूर्णांक में एक कॉल द्वारा Integer.valueOf
को बॉक्सिंग जाता है, और परिणाम पहले स्थानीय में संग्रहित है परिवर्तनीय (astore_1
):
22: iadd
23: invokestatic #5; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
26: astore_1