码迷,mamicode.com
首页 > 其他好文 > 详细

装箱与拆箱

时间:2014-12-14 11:55:01      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:blog   使用   sp   for   java   strong   on   div   问题   

在Java 1.5发行版本中,引入了装箱拆箱的机制。也就是说,你可以在代码中将基本类型与装箱类型混用,比如int与Integer。

当你将基本类型赋值给装箱类型时,会自动进行装箱操作:

1 Integer i = 5;      <=>      Integer i = Integer.valueOf(5);

当你将装箱类型赋值给基本类型时,会自动进行拆箱操作:

1 int i = new Integer(5);     <=>     int i = (new Integer(5)).intValue();

在使用装箱机制时,会带来一些性能问题,比如下面这段代码,用于计算所有32位正整数的和:

1 Long sum = 0L;
2 for (long i = 1; i <= Integer.MAX_VALUE; i++)
3 {
4     sum += i;
5 }
6         
7 System.out.println(sum);

这段代码看上去没有问题,而且运行结果也是符合预期的,但是运行速度却慢的惊人。原因是每一次调用“sum += i”这行语句时,都会创建一个新的Long对象。所以整个循环总共创建了(231-1)个Long对象,而实际上这些对象都是多余的。将代码进行如下调整后,性能会提升很多:

1 long sum = 0L;
2 for (long i = 1; i <= Integer.MAX_VALUE; i++)
3 {
4     sum += i;
5 }
6         
7 System.out.println(sum);

由于sum是基本类型,所以在调用“sum += i”这行语句时,不会进行任何对象的创建。

虽然装箱与拆箱机制方便了代码的编写,但是建议不要默认使用这种机制。

装箱与拆箱

标签:blog   使用   sp   for   java   strong   on   div   问题   

原文地址:http://www.cnblogs.com/jtree/p/4162317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!