2019年08月19日(星期一)  农历:己亥年七月十九
  • 首页
  • JAVA
  • 字节码解释Java自动装箱和拆箱的操作

作者:三年。分类: JAVA

C++的时候,不管是什么操作,基本上都可以知道编译器到底干了啥。比如运算符。java就是个包装特别好的绅士,其实即便编译器悄悄在私底下干了什么龌龊事儿,我们一般来说也不是很容易就看的到。

不过这些问题可以通过看字节码来解决。

代码很简单:

[java] view plaincopy

Integer x = 5;

x++;

且看字节码:

第一个红框的内容就是Integer x = 5;的操作,实际上调用了Integer的valueOf方法。

第二个则对应与x++,先取出x的引用ALOAD 1:x,接着调用intValue方法得到值,然后压栈,+1,再调用valueOf进行装箱操作,这样x的值就完成了++.

说到这里顺便提一句,i++对应四句指令,而++i只对应一句inc指令,因此在可以使用后者的情况下就不要使用前者。

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

已有 0/1300 人参与

发表评论:



手Q扫描加入Java初学者群