在java中什么是自动装箱和拆箱?

售前免费咨询热线: 4 0 0 - 1 8 6 - 0 9 0 5
汇智资讯Huizhi information

当前位置:首页 »在java中什么是自动装箱和拆箱?

在java中什么是自动装箱和拆箱?

日期:2020-03-17 15:43:54 访问量: 来源:

在java中什么是自动装箱和拆箱?java语言从1.5之后,可以自动将原始类型与对象进行相互转换,不用编程转换,被称为java自动装箱和拆箱。将原始类型转换为对象称为自动装箱,例如将int转换为Integer,将对象转换为原始类称为自动拆箱,例如将Integer转换为int。自动装箱和拆箱支持的原始类型和类有:byte和Byte ,char和Character,short和Short,int和Integer,long和Long,double和Double以及boolean和Boolean。

自动装箱和拆箱的原理
 
java自动装箱和拆箱

原理上,自动装箱时,调用了对应类的valueOf()方法,下面的两行代码,实际上是等价的:

Integer i = 1;

Integer i = Integer.valueOf(1);

在没有自动装箱特性时,只能使用第二种写法。

在自动拆箱时,实际调用了对象的xxxValue()方法。下面两段代码也是等价的:

Integer i = new Integer(1);

int j = i;

Integer i = new Integer(1);

int j = i.intValue();

在没有自动拆箱特性时,只能使用第二种写法。

自动装箱和拆箱的坑

自动装箱和拆箱可以简化代码的编写,不用工程师手动进行装箱和拆箱。当然,大家在享受这个方便的特性时,也要注意避免踩坑,给程序带来bug。

比较常见的问题是自动拆箱时,被拆的对象为null。原始类型在编写过程中都有初始值,没有初始值会被编译器检查出来,不能通过,所以一般情况下,自动装箱不存在没有初始值的情况。但是在拆箱时,被拆箱的对象有可能是null,这个时候进行拆箱,会抛出NullPointerException。因此,调用方法的参数是原始类型时,要特别注意,传递的对象是否为null。

另一个常见的问题是使用运算重载符时,会生成新的对象,如果在大量的循环中使用,会生成大量的临时对象,影响性能。

汇聚行业精英智慧

致力于高端IT技术人才培养

助力万千学员成就IT梦!

汇智动力

扫码关注 领取资料

www.hzdledu.cn

相关阅读Reading

全国热线:400-186-0905

总部热线:028-6547-1147

周一至周日9:30-24:00

我要咨询
汇智动力微信

汇智动力微信公众号

')