原因 | 一般代码 | 优化代码 |
提高性能,移动cpu不需要一个除法指令 | Int mid = (hi+lo)/2 | Int mid = (hi+lo)>>1; |
局部变量的赋值性能高于全局变量的赋值 | Int sum Public void sum() { For(int i=0;i<1000;i++) { Sum += 1; } } | Int sum Public void sum() { Int temp = sum; For(int i=0;i<1000;i++) { Temp += 1; } Sum = temp } |
多种选着时,使用switch语句会比else-if语句可读性强 |
|
|
循环控制的优化 (一般代码会多次执行v.size(),优化的代码只计算一次v.size()) |
Vector v; For(int i=0;i<v.size();i++) {
}
| Vector v; Int n = v.size() For(int i=0;i<n;i++) {
}
|
字符串常数 (一般代码会申请两块内存空间,优化后的只是一块) | String str = new String(“abc”); | String str=”abc”; |
字符串 (一般代码会申请10块内存空间,优化后的只是一块) | StringBuffer sb; For(int i=0;i<10;i++) { Sb.append(“abc”); } | StringBuffer sb; String str = “abc”; For(int i=0;i<10;i++) { Sb.append(str); } |
字符串与空字符串的判断优化 (优化后的代码不用为空字符串分配空间) | String s; If(s.equal(“”)) { } | String s; If(s.length==0) { } |
只有一个字符的字符串,最好用字符代替 | Sb.append(“a”); | Sb.append(‘a’); |
有些情况下用StringBuffer会比用String好 | String s1=”s1”; String s2=”s2”; String s3=s1+s2; | StringBuffer sb = new StringBuffer(“s1”); Sb.append(“s2”); |
异常处理 | Try { Cus.fun(); } catch( NullPointerException e) {
} | If(cus == null) { Return ; } else { Cus.fun(); } |
尽量不使用类中类 |
|
|
引用不用之后置空 连接最终要关闭,释放资源 |
|
|
一般在构造函数里创建对象,分配资源 |
|
|
注意保护现场 |
|
|