effective java 学习心得 目的 用静态工厂方法代替构造器的最主要好处 为什么避免使用终结方法 equals方法 hashcode clone  Comparable接口 使可变性最小化 接口优于抽象类 接口只用于定义类型 用函数对象表示策略 优先考虑静态成员类 优先考虑静态成员类 请不要在新代码中使用原生态类型 消除非受检警告 优先考虑泛型方法 利用有限制通配符来提升API灵活性(泛型最有用的一节) 用enum代替int常量   用实例域代替序数 用EnumSet代替位域 用EnumMap代替序数索引  注解优于命名模式  用标记接口定义类型 检查参数的有效性 必要时进行保护性拷贝 慎用重载 慎用可变参数 返回零长度的数组或者集合而不是null 将局部变量的作用域最小化 for-each循环优先于传统的for循环 第48条:如果需要精确的答案,请避免使用float和double 第52条:通过接口引用对象 第57条:只针对异常的情况才使用异常 第58条:对可恢复的情况使用受检异常,对