标签:
1.单实例的静态类实现、枚举实现、序列化时readResolve方法
2.多个参数的构造方法用builder方式实现,内存中序列化的使用bai
3.Service provider framework
4.一个拥有private的构造方法的类是不能被继承的
5.String s=String("two") ,String s2="one"的区别
6.注意不必要的自动装箱和拆箱之间运算时的转换的时间消耗
7.关于java内存泄露的一个Stack实现例子,当出栈时应该将该数组对应的那个坑位置为null,如 elements[position]=null;让GC有机会回收,类似的问题还有监听器的注册,WeakHashMap的使用等,总之记住一点:无论什么时候,当一个对象不使用了时,那个存放它的引用变量(坑位)应该置null
8.当定义的类是 值类型 时 如(Integer),一定要按照equals的值等价逻辑复写 equals 方法,注意是值类型
9.子类覆盖Object的 equals时,子类的equals方法的参数不能使用用自己的类型,保持默认使用Object类型,否则并不能覆盖掉父类的equals方法,并不能保证其被调用
10.hashCode方法和equals方法的微妙之处在于,如果equals返回true,则两个对象的hashCode返回的整数值一定要相同,但是如果两个对象的equals返回false,又不强烈要求它们的hashCode的返回值一定不相等,是否还记得hashCode返回值计算的算法(面试有加分的),还有值得一提的是hashCode方法时native方法,它默认的实现是根据对象的堆内存地址计算的,所以它和默认的equals有着一致的默认期望,如果要复写它一定要和equals的值相等判断的逻辑保持一,且在使用基于hash值计算的数据结构或工具类时一定要保证equals和hashCode同时被复写,因为它们作为键值时使用时,很可能第三方数据结构比较时为了效率先判断对象的hash值,相等才会去比较equals方法,所以在使用eclipse自动生成hashCode时,一定要删去那些在equals中没有用到的字段
11.
标签:
原文地址:http://www.cnblogs.com/LuLei1990/p/4315744.html