不要创建不必要的对象
一.一些对象创建后不会在更改,可重复使用的对象不比在重新创建。
二.能使用基本类型计算而尽量使用基本类型,包装类型在效率上比基本类型要低
比如:
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方法。