改变JAVA编码的陋习,养成好习惯

今天看到一篇文章,相当好,其中有一部分陋习也是我经常有的,先总结下来。

1. boolean的赋值直接用 true/flase,而不是 new Boolean(true/flase);

2. 对 Integer的赋值使用 Integer.valueOf(),而不是new Integer();

3. 使用StringBuffer来使字符串相加,而不是使用 String + String.

4. 使用Hash表(HashMap),但是如果数据较大,利用缓存,用算法淘汰不再使用的HashMap,一方面增快速度,一方面降低内存占用;

5. 避免过深的类层次结构和调用过深的方法;

6. 变量只有在用到的时候才去定义和实例化;

7. 尽量避免使用static,类内私有常量可以用final来代替;

8. 对频繁使用的变量使用对象池技术;

9. 保证每个IO操作,connection及时关闭。

 对3.的补充,StringBuffer.append(),是运行的时候比较快,但是"+"是在编译的时候已经做好了,看来以后运用的时候,如果是固定的字符串相加,使用“+”和StringBuffer.append()一样,如果是运行时打的变量相加还是用StringBuffer.append()。

 

好习惯:

1. 注释尽可能全面;

2. 多次使用的相同变量最好归纳为常量;

3. 尽量少的在循环中执行方法调用;    

for (int i =0; i<list.size();i++) {}
修改为:
for (int i=0,size=list.size();i<size;i++){}

 

4. 常量的定义可以放到接口中,因为接口里只允许存在常量,所以把常量放到接口中声明就可以省掉public static final 这几个关键字;

5. ArrayList和LinkedList的选择:

  最好能够对List的使用场景做出评估,然后根据特性来选择,

  ArrayList底层是使用数组实现的,因此随机读取数据会比LinkedList快很多;

  而LinkedList是使用链表实现的,新增和删除数据的数据比ArrayList快很多。

6. 对字符串进行处理的时候尽量采用StringBuffer和StringBuilder。

7. 如果可以使用基本类型尽量使用基本类型,而不是包装类,因为基本类的变量时存放在栈中的,包装类则是存放在堆中,栈的操作速度比堆快很多;

8. 尽早将不再使用的变量引用赋值null,可以帮助jvm更快的进行内存回收;

9. 在finally块中对资源进行释放:典型场景是使用IO流的时候,不论师傅出现异常,最后都应该在finally中堆流进行关闭;

10. 在HashMap中使用一个Object作为key时,要注意如何区分Object是否相同:

  在jdk的HashMap实现中,判断两个Object类型的key是否相同的标准时hashcode是否相同和equals方法的返回值。

  如果需要对两个数据相同的内存对象当作不同的key存储到hashmap中就要对hashcode和equals方法进行覆盖。

 

posted on 2012-06-08 10:55  佐岸沧海  阅读(359)  评论(0编辑  收藏  举报