Se compila en esto:
Integer sum = Integer.valueOf(new Integer(2).intValue()+new Integer(4).intValue());
Usted puede verificar esto buscando en el byte Desmontaje del código obtenido con javap -c
.
Aquí es la parte que corresponde a new Integer (2) .intValue(), dejando int 2 en la pila:
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
Aquí es la parte que corresponde a new Integer (4) .intValue (), dejando int 4 en la pila:
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
y aquí la suma de 2 + 4 se calcula con iadd
, la suma se encajona en un entero por una llamada a Integer.valueOf
, y el resultado se almacena en el primer locales variable (astore_1
):
22: iadd
23: invokestatic #5; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
26: astore_1