1.1 Object类
- java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
- 如果一个类没有特别指定父类, 那么默认则继承自Object类。
1.2 Object 类的 toString 方法
- String toString() :返回该对象的字符串表示
- 看一个类是否重写了toString方法,直接打印这个类对应对象的名字即可,
- 如果没有重写toString方法,那么打印的就是对象的地址(默认);
- 如果重写toString方法,那么就按照重写的方式打印
package cn.xww.demo01;
public class demoToString {
public static void main(String[] args) {
Person p = new Person("李华",20);
String s = p.toString();
//直接打印对象的名字,其实就是调用对象的toString方法
System.out.println(p);//Person{name='李华', age=20} 重写了toString方法
System.out.println(s);//Person{name='李华', age=20} 重写了toString方法
}
}
1.3 Object 类的 equals 方法
- public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
- Object 类的 equals 方法的源码:
public boolean equals(Object obj){
return (this == obj);
}
- notes:
1.参数:Object obj : 可以传递任意的对象
2.方法体:
“==”:比较运算符,返回的就是一个布尔值 true/false
基本数据类型:比较的是值
引用数据类型:比较的是两个对象的地址值
this:调用此方法的对象
obj:传递过来的参数
package cn.xww.demo01;
public class demoEquals {
public static void main(String[] args) {
Person p1 = new Person("梨花",20);
Person p2 = new Person("钻井",20);
Boolean t = p1.equals(p2);
System.out.println(t);//false
}
}
1.4 Object 类的 equals 方法重写
- 默认地址比较:如果没有覆盖重写equals方法,那么Object类中默认进行 == 运算符的对象地址比较,只要不是同一个对象,结果必然为false。
- 对象内容比较:如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。
@Override
public boolean equals(Object o) {//
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}