现在的位置: 首页 > 综合 > 正文

避免创建不必要的对象

2014年01月24日 ⁄ 综合 ⁄ 共 696字 ⁄ 字号 评论关闭


试比较代码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

抱歉!评论已关闭.