首页 > 代码库 > 装箱与拆箱
装箱与拆箱
在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”这行语句时,不会进行任何对象的创建。
虽然装箱与拆箱机制方便了代码的编写,但是建议不要默认使用这种机制。
装箱与拆箱
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。