加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Java中基础类型的包装类在拆箱和装箱过程中起到了什么用处

发布时间:2021-05-24 05:48:04 所属栏目:编程 来源:互联网
导读:题目重现 下面通过一个简朴的示例才重现一下非常呈现的场景。 public classBoxTest{ public static voidmain(String[]args){ MapString,Objectresult=httpReques

       6: invokestatic  #3                  // Method getValue:(J)J 

       9: pop2 

      10: return 

个中getValue要领挪用对应的是main要领中编号3和6的操纵。编号3为呼吁invokevirtual为要领指令。对应的即是value.longValue,value对应的就是声明的Long范例。

也就是说编译器将getValue(value)拆分成了两步,第一步将通过value的longValue要领将其拆箱,然后再将拆箱之后的功效转达给要领。相等于:

long primitive = value.longValue(); 

test(promitive); 

比较最开始的代码,假如value为null的话,那么在挪用longValue要领时便会抛出NullPointerException。

以是,本质上来讲,所谓的自动拆箱和装箱只不外是Java提供的语法糖罢了。

再次证实

下面用int范例的实例同时证实一下自动拆箱和自动装箱两个操纵语法糖底层到底是怎么运行的:

public class IntBoxTest { 

 

    public static void main(String[] args) { 

        Integer index = 11; 

        int primitive = index; 

    } 

同样查察上面代码的字节码:

public class com.choupangxia.box.IntBoxTest { 

  public com.choupangxia.box.IntBoxTest(); 

    Code: 

       0: aload_0 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读