第二章 对象的创建

1,如果构造参数过多,使用build来创建。
2,原始类型优于封装类型
3,对象过期时,解除相关引用
4,避免使用finalizer

第三章 公共方法

1,equals和hashcode方法要同时重写
2,尽量重写toString

第四章 类及接口

1,尽量不要返回内部的对象,可能被用户误操作,可以转换成unmodifiable
2,类成员尽量不提供set操作
3,组合优于继承
4,接口由于抽象类
5,使用功能函数对象来表示策略,如Comparable
6,内部类尽量使用static

第五章 泛型

1,尽量不要使用raw类型的泛型,Set 优于 Set . Set s=Set<?> o; 优于Set s = (Set)o;
2,类型标记:String.class
3,尽量消除unchecked告警
4,List优于array

第六章 枚举及注解

1,使用枚举替代整型常量
2,使用EnumSet替代bit
3,使用Override注解

第七章 方法

1,避免过长入参
2,函数内聚尽可能简单
3,慎重重载,尽量不要使用相同参数个数的重载
4,static方法不会被子类覆盖,编译时决定
5,返回值尽量不要为null,而是空的集合

第八章 通用技巧

1,使用 for(Element e: elements)
2,避免使用float,double,使用BigDecimal
3,有更优的类型选择,则不使用String
4,字符串连接操作,尽量使用StringBuilder替代
5,通过接口访问,仅仅创建时需要指定实现类
6,避免反射的使用
7,慎用native方法
8,关于性能:写好的代码胜过写快的代码;避免影响性能的设计

第九章 异常

1,异常捕获时必须进行必要的处理或者记录
2,不可将异常用于正常的逻辑中
3,checked异常,unchecked异常(RuntimeException)
4,优先使用标准库中提供的异常

第十章 并发

1,while(!done) {} ==>if(!done){while(true) {}} 普通的while循环会被优化; 如需并发修改done并生效,则需要对done增加volatile修饰符!
2,++操作不是原子性的!可以使用AtomicLong替代内部保证原子性。
3,同步块应该尽可能小,性能损耗
4,不可在同步快中调用外部的,第三方可更改的接口,否则可能导致死锁,异常。。。
5,CopyOnWriteArrayList
6,StringBuilder性能优于StringBuffer,后者内部有同步操作
7,尽量使用Execute框架,ThreadPoolExecutor等,优于Timer
8,Runnable,Callable(有返回值) 优于Thread
9,避免使用wait,notime 优于 System.currentTimeMillis
10,wait,notify,yield均不建议使用

第十一章 序列化

1,避免直接实现Serializable接口进行序列化,扩展性差,存在安全漏洞,