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

Effective java 第二章 对象 (2)

时间:2015-07-31 09:03:47      阅读:116      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!