开发者社区> 问答> 正文

[@饭娱咖啡][¥20]可否详细说下自动拆箱

我对这个概念一直不是理解

展开
收起
微笑de向阳 2018-10-29 23:57:58 2220 0
2 条回答
写回答
取消 提交回答
  • auto box/unbox 是jdk5推出的新特性.简化代码的操作的,在基础数据类型和包装类之间的转换.
    java 中 基础数据类型严格意义上说是一种特殊的对象,而我们平时操作的是普通的对象.
    当你使用的方法,添加或获取的是一个普通的对象时候(包装类)就会自动装箱.反之就是拆箱,在算数符运算的时候也会发生.
    这个特性虽然带来了一些便利,但是使用不恰当会有很大的性能损失,或者出现空指针异常(unbox).
    所以我们在开发的时候,一定要考虑到能使用基础数据类型就使用基础数据类型.例如使用int[]而不是List.


    11

    2019-07-17 23:11:01
    赞同 展开评论 打赏
  • 主要从事 Java 后端开发。

    自动拆箱可以说的东西还挺多,也有一些需要注意的地方。
    首先讲一点,所谓拆箱,就是把包装类 Byte,Short,Character,Integer,Long,Float,Double,Boolean 转为基础类型 byte,short,char,int,long,float,double,boolean 。
    而所谓的自动拆箱,就是自动将包装类转为基础类型。

    先来个手动转换包装类到基础类型,代码如下:
    int a=Integer.valueOf("12");

    再来个自动拆箱,代码如下:
    Integer a= 1;
    int c = a + 2;
    这时候,Integer a 会被自动拆箱为 int a。为什么要对 Integer 进行拆箱呢?因为 Integer 是对象,对象时无法进行加减乘除,只有基础数据类型可以。

    2019-07-17 23:11:01
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载