首页 > 编程语言 > 详细

Effective java 第二章 对象 (2)

时间:2015-07-31 09:01:53      阅读:253      评论:0      收藏:0      [点我收藏+]

不要创建不必要的对象

一.一些对象创建后不会在更改,可重复使用的对象不比在重新创建。

二.能使用基本类型计算而尽量使用基本类型,包装类型在效率上比基本类型要低

 比如:

public static void main(String[] args) {
Long i=0L;

//long i=0L;
for(int j=0;j<1000000;j++){
i+=1;
}

循环一百万次    Long 类型  时间差  32      long 类型  时间差  7    

原因是 ,使用Long类型进行运算是,jvm会自动将i拆箱成long对象运算,然后在装箱成Long对象,循环在不断的拆箱和装箱,所以效率会很低

 

 

 关于对象的equals方法和hashcode方法

说到equals方法 ,肯定要说== ,这两者的区别 ,简单的说就是equals比较的是对象的“值”是否相等,

 ==分为两种情况 ,复合对象比较的是否为同一个对象,比较的是他们在内存中的存放地址。如果是基本类型使用==则是比较他们的值。

 

判断对象是否equals则是对象的equals方法

重写equals方法时必须要重写hashcode方法

why?

比如   有一个cat类,重写了 equals方法。然后 使用hashmap 存储 map.put(new cat(name),"112");  

           然后在 map.get(new cat(name));    返回值 是 null

 why?

      hashmap 首先put 方法将对象 根据hashcode放入对应的hashbucket 中,hashmap 执行get方法时会先根据key对象的hashcode从hashbucket寻找,

如果相同再调用对象的equals方法, 所以上述的map map.get(new cat(name))对象是找不到 value的 ,因为cat对象没有重写hashcode方法。

 

 

 

 

 

 

 

 

 

Effective java 第二章 对象 (2)

原文:http://www.cnblogs.com/qiuyuedong/p/4682759.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!