Java Related
1.参数by value 非 by reference
2.不变的data 和 object reference用final
3.缺省所有的non-static 函数都可overridden
不允许客户overridden的函数用final
4.array与vector 之间要慎重
array可以容纳 primitive type 也可容纳 object reference
5. polymorphism优于instanceof(运行期确定对象的隶属class)
6.必要时才选择instanceof
7.一旦不需要object reference就 = null
8.不要总依赖java garbage collection
"内存问题纯属庸人自扰"--------------掌嘴。
Runtime rt=Runtime.getRuntime();
long mm=rt.freeMemory();
System.out.println(mm);
//.........
System.gc();
//..........
System.out.println(mm);
9. reference vs. primitive means primitive vs. wrapper
10. == vs. equals()
不要依赖equals()的缺省实现
11. overridden equals()要深思熟虑
12.overridden equals()时优先考虑getClass();
13.调用 super.equals()唤起base class的相关行为
14. equals()中慎用 instanceof
15. 想try/catch置于循环之外
------------------------------------------
Java Performance
1. 把焦点放在 datastruct 和 Algorithm上
2. StringBuffer.append() 优于 String.concat()和+
3.不要依赖 compile-in-time
4.理解运行期Runtime优化技术
5. 将对象的creation cost减至最小
6.尽可能用 stack 变量
Class StackVars{
private int inst_var;
private static int static_var;
void stackAccess(int var){
int j=0;
for(int i=0;i
j++;
}
void instanceAccess (int val){
for(int i=0;i
inst_var++:
}
void staticAccess(int val){
for(int i=0;i
static_var++
}
}
7.多使用static final private 促成 inlining,在编译器被statically resolved
8.instance变量init一次就好
9. primitive vs. wrapper
10.不要用Enumeration 或Iterator 遍历 Vector
<1> Iterator
<2> ListIterator
<3> Enumeration
<4> get() //it's the best
11. 用System.arraycopy()来cp array
12. array vs. Vector和 ArrayList
1 3. 尽量reuse Object
14. 手工优化 javap -c
没有评论:
发表评论