java – 当我们添加两个整数对象时操作?

前端之家收集整理的这篇文章主要介绍了java – 当我们添加两个整数对象时操作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我们在 java添加两个Integer对象时,有人可以解释一下内部行为吗? (就像将unBox对象转换为原语,然后添加两个整数,最后将其包装到Integer对象中)
Integer sum = new Integer(2) + new Integer(4);

解决方法

它编译成:
Integer sum = Integer.valueOf(new Integer(2).intValue()+new Integer(4).intValue());

您可以通过查看使用javap -c获取的字节码反汇编来验证这一点.

这是对应于新的整数(2).intValue()的部分,在堆栈中留下int 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

这是与新的Integer(4).intValue()对应的部分,将int 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是用iadd计算的,通过调用Integer.valueOf将总和包装成整数,结果存储在第一个局部变量(astore_1)中:

22: iadd
23: invokestatic    #5; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
26: astore_1
原文链接:https://www.f2er.com/java/125627.html

猜你在找的Java相关文章