1.toString
重写toString的理由是什么?
答:因为在打印某一个对象时,他需要去调用toString 方法,而如果子类不重写这个方法,默认
调用的是Object 类中的toString 方法,getClass().getName() + '@' + Integer.toHexString(hashCode())
以上这种打印的格式不是我们想看到,想看到这个对象内部的细节(成员变量值),所以我们需要重写toString()方法
2.eqauls
为什么要重写eqauls方法
因为在Object 类中的eqauls
public boolean equals(Object obj) {
return (this == obj);
}
注意: == 在基本数据类型是 比较值
引用数据类型是 比较地址值
如果我想要根据两个对象的内容相同时,就让其返回true ,在Object 类中的eqauls
是为了两个对象的内容相同时 就返回true
思考问题:String 属于引用数据类型 ,因为String 重写了eqauls 方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o; //student -- s2
if (age != student.age) return false;
return name != null ? name.equals(student.name) : student.name == null;
} |
|