标签: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