`
acrbb
  • 浏览: 11221 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java Effective 49 基本类型优于装箱基本类型

阅读更多
1. 同一样比较,a,b 不相等!dentity comparision!
Integer a = new Integer(1);
Integer b=  new Integer(1);


2. 当装箱基本类型引用为null时,进行自动拆箱时,将抛出java.lang.NullPointerException异常。
        // java.lang.NullPointerException
        // if(42==i){
        // System.out.println("Yes");
        // }

3. 装箱,拆箱效率低!如!
 public static void main(String[] args) {
     
        {
            Date start = new Date();
            Long sum = 0l;
            for (long i = 0; i < Integer.MAX_VALUE; i++) {
                sum += i;
            }
            System.out.println(sum);
            Date end = new Date();
            System.out.println("box & unbox cost:  " + (end.getTime() - start.getTime()));
        }

        {
            Date start = new Date();
            long sum = 0l;
            for (long i = 0; i < Integer.MAX_VALUE; i++) {
                sum += i;
            }
            System.out.println(sum);
            Date end = new Date();
            System.out.println("NO box & unbox cost:  " + (end.getTime() - start.getTime()));
        }
    }


引用

输出:
box & unbox cost:     26233
NO box & unbox cost:  5874




合适场合:
1. Set中的Key, Value.因为不能将基本类型放入集合中!
分享到:
评论
1 楼 bugmenot 2011-01-31  
用了包装类型当然只能用equals比较相等

acrbb 写道
3. 装箱,拆箱效率低!如!
 public static void main(String[] args) {
     
        {
            Date start = new Date();
            Long sum = 0l;
            for (long i = 0; i < Integer.MAX_VALUE; i++) {
                sum += i;
            }
            System.out.println(sum);
            Date end = new Date();
            System.out.println("box & unbox cost:  " + (end.getTime() - start.getTime()));
        }

        {
            Date start = new Date();
            long sum = 0l;
            for (long i = 0; i < Integer.MAX_VALUE; i++) {
                sum += i;
            }
            System.out.println(sum);
            Date end = new Date();
            System.out.println("NO box & unbox cost:  " + (end.getTime() - start.getTime()));
        }
    }


引用

输出:
box & unbox cost:     26233
NO box & unbox cost:  5874



楼主大大能把两个测试的顺序反过来再测一次吗,
 public static void main(String[] args) {
     
        {
            Date start = new Date();
            long sum = 0l;
            for (long i = 0; i < Integer.MAX_VALUE; i++) {
                sum += i;
            }
            System.out.println(sum);
            Date end = new Date();
            System.out.println("box & unbox cost:  " + (end.getTime() - start.getTime()));
        }

        {
            Date start = new Date();
            Long sum = 0l;
            for (long i = 0; i < Integer.MAX_VALUE; i++) {
                sum += i;
            }
            System.out.println(sum);
            Date end = new Date();
            System.out.println("NO box & unbox cost:  " + (end.getTime() - start.getTime()));
        }
    }

相关推荐

Global site tag (gtag.js) - Google Analytics