星期四, 二月 19, 2009

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



没有评论: