一.Object类
Object类为所有类的父类,是类层次结构的根类,每个类都是用Object作为超类
所有对象(包括数组)都实现这个类的方法
二.toString方法
定义:返回该对象的字符串表示
注意事项:
看一个类是否重写了toString方法,直接打印这个类对应对象的名字即可
- 如果没有重写toString方法,那么打印的就是对象的地址值
- 如果重写了就按重写方法打印
实例:
@Override
public String toString(){
return "name = " + name + " age = " + age;
}
三.equals方法
定义:
Person类默认继承了Object类,所以可以使用Object类的equals方法
boolean equals(Object obj)
//指示其他某个对象是否与此对象相等
重写
Object类的equals方法,对两个对象进行比较,需要防止空指针异常
Object.equals(s1,s2);
但是如果直接对null调用方法则会抛出空指针异常
s1.equals(s2)
系统提供的实例代码:
@Override
public boolean equals(Object o) {
if (this == o) return true;
//getClass()!=o.getClass() 使用反射技术,判断o是否为person类型,等效于obj instanceof person
if (o == null || getClass() != o.getClass()) return false;
person person = (person) o;
if (age != person.age) return false;
return name != null ? name.equals(person.name) : person.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
自己重写的equals代码
@Override
public boolean equals(Object obj){
if (obj == null){
return false;
}
if(obj == this){
return true;
}
//传递本身
if(obj instanceof person) {
person p = (person) obj;
return (this.age == p.age) &&(this.name.equals(p.name));
//对name使用equals,因为是引用类型
}
else
return false;
}