1.避免在循环条件中使用复杂表达式
2.为vectors ,hashtables 定义初始大小。
3.在finally中关闭stream释放资源。
4.用System.arraycopy()来替代循环复制数组。
5.getter,setter设置为final
6.若左边对象的静态类型等于右边,instanceof表达式返回永远是true
7.避免不必要的强制类型转换,如子类,赋值到父类对象。
8.查找单个字符,用charat()替代startwith();
9.用移位操作代替'a/b'。eg:a/4 ->> a >> 2 a/8 ->> a >>3
10.用移位操作代替a*b , eg:a*4 ->> a<<2 a*8 ->> a<<3
11.在字符串相加的时候,若加数为一个字符,用'a' 代替“a”.
12.不要在循环中调用synchronized
13.将try/catch移除循环
14.用stringtokenizer 代替indexof(),substring();
15.不在循环体中实例化变量
16.访问静态变量和实例变量比访问局部变量多浪费2-3个始终周期。
17.! 操作符降低程序的可读性
18.与一个接口进行instanceof操作比判断某个类更快
19.Java+oracle应用中,Java内嵌的sql尽量用大写,减少oracle解析器的解析负担
20.用for(int i=0;i<list.size();i++) 不如用for(int i=0,int len=list.size();i++).
21.异常应该用于错误处理,而不是控制程序流程。
22.不用new创建对象的实例,用new时,构造函数链中的所有构造函数都会被自动调用。但如果对一个对象实现了cloneable接口,
我们可以通过它的clone方法,clone 不会调用任何类构造函数。
eg:
public static Create getNewCreate(){ return new Create(); }
替换为:
private static Create temp=new Create();
public static Create getNewCreate(){ return (Create)temp.clone(); }
23.不要将数组声明为:public static final
24.单线程尽量使用HashMap ,ArrayList 不推荐HashTable,Vector,因为它们使用了同步机制。
25. 用i%2 !=0 来确定奇数,不用i%2 == 1 ,因为i是负的时候,不成立,高效式:(i&1)!=0
26.2.0-1.1=0.999999999 所以,货币使用如下方式:
货币最小单位分来表示,或者BigDecimal,一定要用BigDecimal(string)构造器,不能用BigDecimal(double)
比较大小用compareto
27.