码迷,mamicode.com
首页 > 编程语言 > 详细

java:无意识自动装箱的可怕之处

时间:2015-07-11 16:47:52      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:java   装箱   基本类型   

前言:《effective Java》一书确实经典,真是为没有早一点买到这本书而感到遗憾。再来学习一个小知识,在之前,我只是知道integer是int的装箱类,而int是基本类型而已,从来没有意识到自动装箱有这么大的区别,“要优先使用基本类型而不是装箱基本类型,要当心无意识的自动装箱。

根据书中所写,我测试了以下的简单例子。

package com.mwq.number;

public class Test {

    public static void main(String[] args) {
        long time1 = System.currentTimeMillis();

        long sum = 0L;
        for (int i = 0; i < Integer.MAX_VALUE / 2; i++) {
            sum += i;
        }

        System.out.println(sum);

        long time2 = System.currentTimeMillis();

        System.out.println(time2 - time1);

        Long sum1 = 0L;
        for (int i = 0; i < Integer.MAX_VALUE / 2; i++) {
            sum1 += i;
        }

        System.out.println(sum);

        long time3 = System.currentTimeMillis();

        System.out.println(time3 - time2);
    }

}

例子很简单,看看Long和long在+i的时候到底有多大的区别,花费的时间是如何的。

看结果,由于我电脑计算0到Integer.MAX_VALUE 的运算速度太慢,所以就只取了一半的量。

576460750692810753
1903
576460750692810753
10939

差了一个数量级!!!!!!!!!

sum在被声明为Long而不是long的时候,就会创造N(具体多少个N,我还真不知道,书中说的是2的31次方,显然我的不是)多个Long实例!

总结:项目中有大量的装箱和基本类型,看来是要好好的优化一下了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

java:无意识自动装箱的可怕之处

标签:java   装箱   基本类型   

原文地址:http://blog.csdn.net/qing_gee/article/details/46842341

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