Object类中equals方法和toString方法的重写问题,equalstostring
分享于 点击 39263 次 点评:268
Object类中equals方法和toString方法的重写问题,equalstostring
(week6-Saturday)
Object类
1、Object类概述(具体查看API文档)Object类是所有类的父类
若一个类未使extends明确标识继承关系,会默认继承Object类(包括数组)
Java中每个类都可以用Object类定义的方法
2、Object类中的equals方法和toString方法
说明:Object类中定义的"equals方法"和"toString方法"往往不能满足我们所想要的逻辑需求,需要我们自行在需要调用该方法的类中对"equals方法"和"toString方法"进行方法重写
----2.1 equals方法
1、先看一下API文档中关于Object类中"equals"方法的说明:该equals类方法Object实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空参考值x和y,
当且仅当x和y引用相同对象(x == y具有值true)时,该方法返回true 。
2、于是涉及到equals方法与"=="的关系:
对于两个对象,当这两个对象指向同一块内存空间时,这两个对象才可用"=="连接,否则会返回false, 而未经过重写的equals方法与"=="的效果相同。
3、equals方法重写(重点):
我们常常需要判断的是两个对象中的元素值是否完全相同,因此我们需要在类中重写equals方法的逻辑判断,使其满足我们的需求
重写如下(在自定义类Speciality中对其进行重写):
/**
* 重写Object类中的equals方法
* @param object
* @return
*/
public boolean equals(Object object){
if(object == this){
return true;
}
if(object instanceof Speciality){
Speciality speciality = (Speciality) object;//强制转换
if(this.getName()==speciality.getName()&&this.getYear()==speciality.getYear()
&&this.getNumberId()==speciality.getNumberId()){
return true;
}
}
return false;
}
----2.2 toString方法
1、API文档中关于toString方法的说明:该toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@ ”,并且对象的哈希码的无符号的十六进制表示。
换句话说,这个方法返回一个等于下列值的字符串: getClass().getName() + '@' + Integer.toHexString(hashCode())
2、对象直接调用原Object类中的toString方法时,输出的是一串地址,字符串直接调用该方法输出的还是字符串,因此需要在类中重写Object方法使得能够以字符串的形式输出类中的元素值。
3、总结(在调用输出函数的基础上):
3.1、输入对象名时,默认直接调用类中的toString方法
3.2、字符串变量继承Object类中的toString方法,输出的是对象的字符串表现形式
3.3、子类可以重写toString方法改变输出的表现形式
相关文章
- 暂无相关文章
用户点评