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

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

发布时间:2021-05-21 12:02:57 所属栏目:编程 来源:互联网
导读:问题重现 下面通过一个简单的示例才重现一下异常出现的场景。 public classBoxTest{ public static voidmain(String[]args){ MapString,Objectresult=httpReques

       1: invokespecial #1                  // Method java/lang/Object."<init>":()V 

       4: return 

 

  public static void main(java.lang.String[]); 

    Code: 

       0: bipush        11 

       2: invokestatic  #2                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 

       5: astore_1 

       6: aload_1 

       7: invokevirtual #3                  // Method java/lang/Integer.intValue:()I 

      10: istore_2 

      11: return 

可以看到main方法部分,编号2进行了装箱操作,将原始类型int,装箱成了Integer,调用的方法为Integer.valueOf;而编号7进行了拆箱操作将Integer类型转换成了int类型,调用的方法为Integer.intValue。

自动拆箱装箱的本质

通过上面的分析,我们可以看出所谓的拆箱(unboxing)和装箱(boxing)操作只不过是一个语法糖的功能。编译器在编译操作时,本质上还是会调用对应包装类的不同方法来进行处理。

装箱时通常会调用包装类的valueOf方法,而拆箱时通常会调用包装类的xxxValue()方法,其中xxx为类似boolean/long/int等。

而自动拆箱和装箱的操作主要发生在赋值、比较、算数运算、方法调用等常见。此时,我们就需要主要空指针的问题。

(编辑:厦门网)

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

热点阅读