网站建设第三方验收收费标准,网站开发员岗位职责,c2c的网站,南通网站推广怎么收费本节主要涉及Object中通用的一些方法#xff0c;比如equals,hashCode,toString,clone,finalize等等 覆盖equals时请遵守通用约定 equals方法实现的等价关系#xff1a; 自反性#xff1a;对于所有的非null#xff0c;aa对称性#xff1a;ab,则ba传递性#xff1a;ab,bc,则… 本节主要涉及Object中通用的一些方法比如equals,hashCode,toString,clone,finalize等等 覆盖equals时请遵守通用约定 equals方法实现的等价关系 自反性对于所有的非nullaa对称性ab,则ba传递性ab,bc,则ac一致性对于没有被修改的ab如果ab则一直ab非空性对于任何非Null,a!null高质量equals方法的诀窍 使用操作符检查——“参数是否为这个对象的引用”使用instanceof检查——“参数是否为正确的类型”参数转换成正确的类型对于每个关键域检查参数中的域是否与对象的域相匹配写完后问自己是否对称、是否传递、是否一致忠告 覆盖equlas时总是覆盖hashCode不要企图让equals过于智能不要将equals中的Object对象换成其他的类型Override public boolean equals(Object o){if(o this)return true;if(!(o instanceof XX))return false;XX xx (XX)o;return xx.x.equals(o.x);//TODO
} 覆盖equals时总是要覆盖hashCode hashCode主要用于放在HashMapHashSetHashTable中时计算hash值。 Override public int hashCode(){int result 17;result 31*resulteee;result 31*resultxxx;return result;
} 其中17是随便写的31是有说道的因为31是个奇素数并且: 31*i(i5)-i 这样JVM在优化的时候效率会更高。 始终覆盖toString() 因为toString方法应该返回对象的关键信息 谨慎的覆盖clone 应该满足 x.clone() ! x
x.clone().getClass() x.getClass()
x.clone().equals(x) 另外clone方法相当于另一种构建器不应该对原来的对象产生影响。 考虑实现Comparable接口 常用的List等等可以通过实现Comparable接口进行排序 public interface ComparableT{int compareTo(T t);
} 当对象小于等于或者大于时应该返回一个负整数零或者正整数。