试比较代码1和代码2:
代码1:
public static void main(String args[]) { long start = System.currentTimeMillis(); Long sum = 0L; for(long i=0;i<Integer.MAX_VALUE;i++) { sum += i; } System.out.println(sum); long end = System.currentTimeMillis(); System.out.println((end-start)/1000); }
代码2:
public static void main(String args[]) { long start = System.currentTimeMillis(); long sum = 0L; for(long i=0;i<Integer.MAX_VALUE;i++) { sum += i; } System.out.println(sum); long end = System.currentTimeMillis(); System.out.println((end-start)/1000); }
上述两个代码的功能是计算1+2+3+...+Integer.MAX_VALUE的值
(本机CPU 2.53GHz)
代码1耗时:
11s
代码2耗时:
28s
因为代码1的sum声明为Long类型,Long是long的包装类,每一次执行sum += i语句,都会创建一个Long对象,所以总共大约创建了2^31次对象。
参考文献: Effective Java (second Edition) -Author: Google Java Architecture CEO Joshua Bloch