1、java.lang.Object类中有两个非常重要的方法:
public boolean equals(Object obj) {
return (this == obj);//比较引用是否相同
}
public native int hashCode();//本地方法
2、Object类是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法;
3、String 、Math、Integer、Double等类重写了object类的equals()方法,做值比较;
4、基本类型在栈上,本身进行值的比较;
5、equals()方法特性:
(1)自反性(reflexive):x不为null,x.equals(x)一定是true;
(2)对称性(symmetric):x、y不为null,当且仅当x.equals(y)是true时,y.equals(x)也是true;
(3)传递性(transitive):x、y、z、不为null,两两equals均为true;
(4)一致性(consistent):x、y不为null,对象信息没修改,多次调用equals()返回结果要一致;
(5)x不为null,x.equals(null)返回false;
6、hashCode()方法特性:
(1)equals()被override时,hashCode()也要被override;
(2)equals()没有改变,多次调用hashCode()得到的Integer也相等;
(3)equals()相等,hashCode()必相等;
(4)hashCode()相等,equals()未必等;
7、hashCode()在集合(Collection)中的作用:
(1)Java中的集合(Collection)有两类,一类是List,一类是;
(2)集合查找时,hashcode能大大降低对象比较次数,提高查找效率;
(3)StringBuffer等类的对象存储进集合类中会出现问题,没有重写equals和hashCode;
(4)HashMap、HashSet、HashTable而言,异常重要,用于寻址;
(5)容器类型程序设计语言,都会带hashCode,主要作用是为了配合基于散列的集合;