笔记:Effective Java

1、静态Factory替代Constructor函数

优势:有名称;不必每次都创建一个新对象,可实现享元;可返回子类型对象;参数化构造时候,代码简洁。


2、遇到多个Constructor 参数时候考虑使用Builder 模式


3、避免创建不必要的对象,尽量重用

如 String s = "aaaa" 远好于 String s= new String("aaaa");

Long s = Long.value(1)   远好于 Long  s = new Long(1);


4、清除过期对象

典型地,清除Collection 中过期的元素,防止内存泄露


5、覆盖equals注意

总要覆盖hashCode;注意方法是 equals(Object obj) 而不是 equals(MyObject  obj)


6、类和成员的可访问性最小化

7、复合优于继承


8、列表List 优于数组

现在不支持泛型数组,会抛ClassCastException


9、优先考虑泛型方法

public  <T>   T myMethod(List<T>  tList)  {}


10、必要时候进行保护性拷贝

比如返回一个数组,为了避免被,可返回其 clone对象。



11、需要精确的答案,不要使用float和double,而使用BigDecimal


13、基本类型优于装箱类型
比如 int 优于 Integer, boolean 优于 Boolean

14、同步访问共享的可变数据
i++,++操作不是线程安全的,可使用AtomicLong
使用Volitale关键字保证可见性

15、Executor 和 task 优于线程

16、并发工具优于wait、notify

17、慎用初始化
单例模式初始化:
public class Singleton{
        private Singleton() {}
        private static Singleton instance ;
        public  static  Singleton getInstance() { return  Holder.singleton  }
        private static class Holder 
        {
              static  Singleton singleton = new Singleton();
        }
}


其余没怎么用到





 

posted @ 2015-01-11 20:48  lihui1625  阅读(89)  评论(0编辑  收藏  举报