java – 当我们添加两个整数对象时操作?
发布时间:2020-12-14 16:22:23 所属栏目:Java 来源:网络整理
导读:当我们在 java中添加两个Integer对象时,有人可以解释一下内部行为吗? (就像将unbox对象转换为原语,然后添加两个整数,最后将其包装到Integer对象中) Integer sum = new Integer(2) + new Integer(4); 解决方法 它编译成: Integer sum = Integer.valueOf(new
当我们在
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 为什么不使用伪随机数生成器来生成测试数据?
- 用SSLSocketFactory 连接https的地址
- What Influences Method Call Performance in Java?--refer
- Java简单实现约瑟夫环算法示例
- java – 用于XMLGregorianCalendar类型的Joda DateTime格式
- java – Autoboxing – 编程概念
- java中实现递归计算二进制表示中1的个数
- java – 像HPJmeter一样的图形工具来查看-agentlib:hprof分
- java – 一个ArrayList中的多个对象类型
- java – 替代CutyCapt