Object类的概念
java.lang.Object 类是所有类层次结构的根类,任何类都是Object类的直接/间接子类。
直接指直接继承Object类,间接指先继承别的类再继承Object类
Object类的常用方法
- Object( )
无参方式构造对象,通常用于子类使用super( )方式调用 - boolean equals(Object obj)
(1) 用于判断调用对象是否和参数对象相等
(2) equals( )方法在非空对象引用上实现相等关系(如果引用为空,空调用方法引发空指针异常)
(3)该方法默认比较两个对象的地址,与 == 运算符的效果等价
(4)若希望该方法比较两个对象的内容,则需要重写该方法
//由于从Object类中继承的方法不足以满足该类的需求,因此需要重写equals()方法比较(学号)内容
@Override
public boolean equals (Object obj){
//1.调用对象和参数对象地址相同,内容一定相同
if(this==obj){
return true;
}
//2.调用对象不为空,参数对象为空,内容不相同
else if(obj==null){
return false;
}
//3.参数对象和调用对象类型相同,则比较两个对象的内容(学号)作为结果
else if(obj instanceof Student){
//使用强制类型转换让父类引用调用子类独有的方法
Student ts = (Student)obj;
if(this.getId()==ts.getId()){
return true;
}else{
return false;
}
}
//4.参数对象和调用对象类型不同,内容一定不同
else{
return false;
}
}
- boolean equals(Object obj)
该方法被重写时,通常有必要重写hashCode( )方法 - int hashCode( )
(1) 用于获取调用对象的哈希码值(内容地址的编号)
— 若equals( )方法比较两个对象相等,则各自调用hashCode( )结果必须相同
— 若equals( )方法比较两个对象不相等,则各自调用hashCode( )结果应该不同
(2) 若希望该方法与equals( )结果保持一致,需要重写该方法
总而言之,equals( )若相等,则hashCode( )相同;equals( )若不相等,则hashCode( )不相同.
若equals( )被重写,则不再代表内存地址,如果再用hashCode( )比较即用内存地址比较,因此不可保证调用对象和参数对象的一致性,所以重写equals( )方法后必须重写hashCode( )方法.
- to String( )
(1) 用于获取调用对象的字符串表示形式
(2)若希望该方法返回更有意义的数据,需要重写该方法
(3)当使用 print / println 打印引用或+连接引用时,自动调用该方法
小结
重写equals( )方法是为比较2个对象的内容是否相等
重写hashCode( )方法是为与equals( )方法的结果保持一致
重写to String( )方法是为结果返回更有意义的数据
本文深入解析Java.lang.Object类,作为所有类的基类,其重要性不言而喻。文章详细介绍了Object类的构造方法、equals()、hashCode()、toString()等核心方法,并探讨了这些方法的重写原则及应用场景。
1465

被折叠的 条评论
为什么被折叠?



